<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
一、准备工作
0.首先,开发者伙伴,你使用的网易云信提供的IM等程序,不然本篇教程不太适合阅读
1.登陆云叮当官网,注册成为开发者,创建应用后,获取AppKey和Secret
2.下载SDK工程,包含AlipaySDK.framework AlipaySDK.Bundle RedpacketSDK.framework RedpacketSDK.Bunlde4个文件
3.根据项目之前是否已经引入了支付宝SDK,将所需的SDK和bundle文件引入工程中
二、添加工程配置
-
在 工程 - Target - General - Linked Frameworks and Libraries中加入:
CoreMotion.framework CFNetwork.framework CoreText.framework QuartzCore.framework CoreTelephony.framework SystemConfiguration.framework libz.tbd libc++.tbd AlipaySDK.framework RedpacketSDK.framework
-
在 工程 - Target - BuildSettings - Linking - OtherLinkerFlags加入
-ObjC
三、设置支付宝回调
1.在AppDelegate.m导入<AlipaySDK/AlipaySDK.h>
2.在AppDelegate.m中的openURL方法中加入两个支付宝回调方法: processOrderWithPaymentResult:url:和processAuth_V2Result:url:,并分别在这两个方法中加入redpacketHandleAlipayResult和redpacketHandleAliAuthResult方法
示例:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic)
{
if (![RedPacket redpacketHandleAlipayResult:resultDic url:url])
{
//[您的其它方法...];
}
}];
[[AlipaySDK defaultService]processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic)
{
if (![RedPacket redpacketHandleAliAuthResult:resultDic url:url])
{
//[您的其它方法...];
}
}];
return YES;
}
四、初始化红包SDK
1.在AppDelegate.m中导入头文件<RedpacketSDK/Redpacket.h>
2.设置URL Scheme 在工程 - info - URL Types中添加一个URL Scheme,格式为rp+AppKey 如rp5d15e9bc84f943068f09d393ea769995
3.在didFinishLaunchingWithOptions:方法中调用初始化方法:
+(void)initRepacketSDKWithAppKey:(nonnull NSString*)key
AppSecretMethod:(nonnull AppSecretBlock)secretBlock
AlipayAuthMehtod:(nullable AliAuthBlock)authBlock;
输入参数:
* key ----------- 在云叮当注册应用后获得AppKey
* secretBlock --- 在此Block里写获取Secret的逻辑。此secret由开发者服务器请求云叮当“随机秘钥生成/刷新接口”获得
* authBlock ----- (非必传)在此Block填获得支付宝授权报文的逻辑。传nil,则默认使用幻舞科技的支付宝商户账号进行用户授权。若开发者若需要使用自己的支付宝商户账号进行授权,网络请求请用同步请求。
示例:
[RedPacket initRepacketSDKWithAppKey:@"1" AppSecretMethod:^NSString * _Nonnull{
//取secret方法
return [self getAppSecret];
} AlipayAuthMehtod:nil];
4.关于secretBlock特别说明:
为了保证secret安全:
(1)请开发者将云叮当管理后台拿到secret,保存在开发者服务端;
(2)由开发者服务端调用云叮当“random-secret”接口,获取随机密钥,并缓存
(3)开发者客户端请求开发者服务器,获得随机密钥,并缓存
(4)开发者客户端将获取随机密钥的方法,传给SDK。即在此secretBlock参数里,写获取动态secret的逻辑
(5)注意:随机密钥具有时效性,过期需要更换。
(6)完整代码见Demo。
五、获取当前登陆用户信息,调用红包SDK查询方法
1.在用户完成云信SDK登陆后,获取当前登陆用户的信息
[[NIMSDK sharedSDK].userManager fetchUserInfos:@[userID] completion:^(NSArray<NIMUser *> * _Nullable users, NSError * _Nullable error)
{
NIMUser * user=users[0];
NSLog(@"userinfo=%@",user);
}];
2.调用红包SDK的查询方法
+(void)queryAvailablePackets:(BOOL)startService
UserID:(nonnull NSString*)userID
UserNickname:(nonnull NSString*)nickname
UserAvatar:(nullable NSString*)avatar
GroupIDArray:(nullable NSArray *)groupArray
Result:(nullable RedpacketResultBlock)block;
六、添加红包类型的消息
1.添加红包消息类型的枚举值
typedef NS_ENUM(NSInteger,NTESCustomMessageType)
{
CustomMessageTypeJanKenPon = 1, //剪子石头布
CustomMessageTypeSnapchat = 2, //阅后即焚
CustomMessageTypeChartlet = 3, //贴图表情
CustomMessageTypeWhiteboard = 4, //白板会话
CustomMessageTypeRedPacket = 5, // 发送红包
CustomMessageTypeRedPacketOpen = 6 //领取红包提示信息
};
2.创建一个实现NIMCustomAttachment,NTESCustomAttachmentInfo的红包协议对象
3.自定义消息界面,新建气泡内容 气泡内容类需要继承 NIMSessionMessageContentView,并使用 - (instancetype)initSessionMessageContentView 作为初始化方法。内容里根据业务需求自行排版
4.新建自定义消息气泡布局配置 配置需要实现 NIMCellLayoutConfig 协议。这里除了自定义消息外,其他消息沿用内置配置,所以配置类继承基类 NIMCellLayoutConfig
七、在聊天界面添加发红包入口
1.在附加按钮面板中添加发送红包的按钮,在NTESSessionConfig的- (NSArray *)mediaItems方法中添加
NIMMediaItem *redPacket = [NIMMediaItem item:@"onTapMediaItemRedPacket:" normalImage:[UIImage imageNamed:@"ic_hongbao"] selectedImage:[UIImage imageNamed:@"ic_hongbao"] title:@"红包"];
......
return [defaultMediaItems arrayByAddingObjectsFromArray:items];
2.定义消息发送方法--在NTESSessionMsgConverter中
// 发送红包
+ (NIMMessage *)msgWithRedPacket:(RedPacketAttachment *)attachment
+ {
NIMMessage *message = [[NIMMessage alloc] init];
NIMCustomObject *customObject = [[NIMCustomObject alloc] init];
customObject.attachment = attachment;
message.messageObject = customObject;
NIMMessageSetting *setting = [[NIMMessageSetting alloc] init];
setting.apnsEnabled = NO;
message.setting = setting;
return message;
}
// 领取红包后显示的提示信息
+ (NIMMessage *)msgWithOpenRedPacket:(RedPacketOpenAttchment *)attachment
+ {
NIMMessage *message = [[NIMMessage alloc] init];
NIMCustomObject *customObject = [[NIMCustomObject alloc] init];
customObject.attachment = attachment;
message.messageObject = customObject;
message.remoteExt = @{
CMSendPacketAccid: attachment.sendPacketId,
CMOpenPacketAccid: attachment.openPacketId
};
NIMMessageSetting *setting = [[NIMMessageSetting alloc] init];
setting.apnsEnabled = NO;
message.setting = setting;
return message;
}
八、设置红包类型消息的点击事件
1.- (void)onTapCell:(NIMKitEvent *)event
方法为消息点击事件,在里面调用红包SDK领取方法
+(void)fetchRedpacketFromViewController:(nonnull UIViewController*)viewcontroller
RedpacketInfo:(nonnull RPPacketInfo *)packet
SuccessBlock:(nullable RedpacketResultBlock)block
九、添加红包记录功能入口
1.开发者可在类似设置、个人中心等位置添加一个红包记录的入口,方法:+(void)showRedpacketRecordViewFrom:(nonnull UIViewController*)viewcontroller
这样下来,工作就基本完成了。
欢迎留言和我交流~
云信咨询QQ:4009000123
云叮当交流群:106593643
相关推荐
适用于thinkphp的网易云信的接口
网易云信iOS UI组件源码仓库.zip,网易云信 iOS UI 组件,提供聊天界面,文本消息,图片消息,语音消息,视频消息,地理位置消息,自定义消息(阅后即焚)等消息示例
网易云信IM即时通信服务端实现,主要配合前端实现创建群组,加入群聊,获取用户信息等等功能。代码简单易懂,所有实现都是以测试Main函数测试运行的,方便给入门的伙伴们一些参考
网易云信React Native组件
网易云信的官方api,里面有详细的demo,简单粗暴,网易出品,果然精品
1>网易云信官网的demo功能太复杂.将IM.音视频.功能抽离出来.方便在其他项目移植.快速集成网易云信IM
网易云信官方demo 网易短信接口 网易聊天室等接口
网易云信php SDK 带示例文件 调用方便 $model = new \Org\Util\Netease($this->AppKey,$this->AppSecret,'curl');
网易云信IM php开发接口 demo 是从别的网站下载的 自己用这个开发了网易的im服务端 挺好用的 ·········
需要第三方依赖 下面几个下载下来拷贝文件夹就能用(删掉文件夹里的plist和其他无关文件) Toast v3.0 SVProgressHUD v2.0.3 M80AttributedLabel v1.6.3 TZImagePickerController v1.9.0 SDWebImage比较特殊 ...
Android集成网易云IM实现 网易云信Im的登录、 单聊和建群群聊等功能,适合新手入门网易云IM通讯
网易云信 iOS UI 组件,提供聊天界面,文本消息,图片消息,语音消息,视频消息,地理位置消息,自定义消息(阅后即焚)等消息示例
NIM_iOS_SDK, 网易云信 iOS SDK 发布仓库
本示例为展示网易云信小程序音视频NRTC SDK能力
NIM Duilib 包含了一整套桌面软件的开发部件,与其说这是一个界面库,不如说它是一个开发框架。从原有 Duilib 基础上拓展了一些新的能力,并整合了 Google base 基础类库(线程、内存、闭包等)。...
一个单聊demo,可以收发文字消息和图片消息,基于网易云信实现,博客地址为 https://blog.csdn.net/hq942845204/article/details/81191979
网易云信直播竞答解决方案
用户可参照该demo,将网易云信SDK接入自己的应用。特别说明本原始码与官方原始码基本一致,但做了如下调整。 1,很多新人拿到代码后遇到很多问题,无法正常登录,或者报各种错误,该内核买有这个问题,只需要在...