`
云叮当
  • 浏览: 3781 次
文章分类
社区版块
存档分类
最新评论

网易云信红包功能接入指南(iOS)

阅读更多

<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文件引入工程中

二、添加工程配置

  1. 在 工程 - 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
    
  2. 在 工程 - 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

0
2
分享到:
评论

相关推荐

    网易云信demo

    网易云信是网易公司推出的一款专业的即时通讯服务产品,它提供了丰富的API和SDK,帮助企业或开发者快速构建聊天、群组、音视频通话等功能。本Demo是网易云信官方提供的示例代码,旨在帮助开发者更好地理解和使用其...

    使用网易云信实现的文字图片聊天Demo

    在本文中,我们将深入探讨如何使用网易云信(NIM)来实现一个功能完善的文字图片聊天Demo。网易云信是网易公司提供的一款专业级的即时通讯(IM)服务,它为开发者提供了丰富的API和SDK,使得开发人员可以快速构建...

    react-网易云信ReactNative组件

    网易云信是网易公司提供的一种即时通讯服务,它为开发者提供了丰富的API和SDK,以便在自己的应用中实现聊天、音视频通话等功能。 这篇内容将深入探讨如何在React Native项目中整合网易云信的组件和功能。首先,我们...

    网易云信Im即时通信服务端

    【网易云信Im即时通信服务端】是一款专为开发者设计的即时通讯服务,它提供了丰富的API接口和SDK,便于开发者快速构建聊天、群组管理等社交功能。在服务端实现中,开发者通常需要关注以下几个核心知识点: 1. **API...

    网易云信接口开发 (php SDK) 带示例文件

    【网易云信接口开发 (php SDK) 带示例文件】是针对网易云信通信服务的PHP开发工具包,它允许开发者通过简单的代码调用来实现各种通讯功能,如发送消息、管理用户、处理会话等。这个SDK包含了必要的类库和示例代码,...

    网易云信接口代码

    适用于thinkphp的网易云信的接口

    网易云信iOS UI组件源码仓库.zip

    《网易云信iOS UI组件源码解析》 网易云信,作为国内知名的企业级通讯服务提供商,为开发者提供了丰富的SDK和API,以便于快速构建稳定、高效的消息通信系统。其中,"网易云信iOS UI组件源码仓库"是其开源项目之一,...

    swift-网易云信iOSUI组件

    本文将深入探讨网易云信iOS UI组件的功能、使用方法以及Swift开发中的相关控件。 1. **聊天界面构建** - 网易云信的iOS UI组件包含了完整的聊天界面设计,开发者可以快速地搭建起类似微信、QQ的聊天窗口,无需从零...

    Android集成网易云IM实现单聊和群聊

    在Android应用开发中,集成网易云信IM是实现即时通讯功能的一种常见选择。网易云信IM提供了一套完整的SDK和服务,让开发者能够快速地在应用中加入聊天、群组等功能,从而提升用户体验。本文将详细讲解如何在Android...

    基于Java的网易云信SDK仿微信聊天功能设计源码

    本项目是基于Java的网易云信SDK仿微信聊天功能设计源码,包含556个文件,其中包括178个PNG图像文件、164个XML配置文件、154个Java源文件、37个GIF图像文件、4个JAR文件、3个Gradle文件、3个JPG图像文件、2个...

    swift-网易云信官网的demo功能太复杂.将IM.音视频.功能抽离出来

    在这个场景中,我们关注的是如何将网易云信的官方Demo中的IM(即时通讯)和音视频功能进行拆分和重用,以便在其他项目中快速集成这些功能。 网易云信是一家提供通讯云服务的平台,其SDK包含了丰富的功能,如文本...

    reactnativechatdemo网易云信IM示例

    React Native Chat Demo是基于网易云信(NetEase YunXin)即时通讯(IM)功能构建的一个示例项目,主要用于展示如何在React Native框架下实现一个聊天应用。React Native是Facebook开发的一种开源JavaScript框架,它...

    网易云信官方phpapi

    【网易云信官方PHP API】是网易公司为其通信与视频云服务——云信提供的开发者工具,主要用于帮助开发者快速集成和实现各种通信功能,如聊天、音视频通话等。这个API包含丰富的示例代码(demo),使得开发过程更为...

    网易云信im php 服务端demo

    在PHP开发环境中,网易云信提供了服务端的SDK,使得PHP开发者能够快速接入其IM服务。本文将深入探讨“网易云信IM php服务端demo”的相关知识点。 【描述】:“网易云信IM php开发接口 demo是从别的网站下载的,自己...

    Android-网易云IMFlutter集成

    【Android-网易云IMFlutter集成】是将网易云信的即时通讯(IM)功能整合到Flutter应用中的过程。Flutter作为Google推出的一种跨平台UI框架,允许开发者使用单一代码库为iOS和Android构建高性能的应用。而网易云信则...

    NIM_iOS_SDK, 网易云信 iOS SDK 发布仓库.zip

    网易云信iOS SDK是一款专为iOS开发者设计的即时通讯(IM)工具包,它由网易公司提供,旨在帮助开发者快速集成聊天、群组、语音、视频等通信功能到自己的应用程序中。这个SDK是开源的,意味着其源代码对公众开放,...

    本示例为展示网易云信小程序音视频NRTCSDK能力

    通过以上步骤,你可以充分利用网易云信小程序音视频NRTC SDK,构建出功能完善的实时通信应用。在开发过程中,不断调试、优化,以确保在各种环境下都能提供稳定、高质量的音视频服务。同时,保持对SDK更新的关注,以...

    网易云信Windows应用界面开发框架(基于Duilib)

    NIM Duilib 包含了一整套桌面软件的开发部件,与其说这是一个界面库,不如说它是一个开发框架。从原有 Duilib 基础上拓展了一些新的能力,并整合了 Google base 基础类库(线程、内存、闭包等)。...

Global site tag (gtag.js) - Google Analytics