IOS开发入门之网易云信红包功能接入指南(iOS)
凌雪 2018-08-29 来源 :网络 阅读 1724 评论 0

摘要:本文将带你了解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 不喜欢 | 2
看完这篇文章有何感觉?已经有2人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程