ios云信不能全屏_IOS开发入门之网易云信红包功能接入指南(iOS)

本文将带你了解IOS开发入门之网易云信红包功能接入指南(iOS),希望本文对大家学IOS有所帮助

一、准备工作

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导入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中导入头文件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* _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

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值