美文网首页实用工具IOS专题收集第三方重要集成工具
iOS IM即时通讯-[融云] [网易云信]简单集成聊天界面

iOS IM即时通讯-[融云] [网易云信]简单集成聊天界面

作者: Mr_Lucifer | 来源:发表于2016-09-10 15:58 被阅读5031次

    前言

    IM即时通讯. 对于iOS开发, 融云, 环信, 网易云信, 都是还不错的选择. 作者今天就以 融云, 网易云信 为例简单介绍下, 即时通讯单聊的 聊天界面 集成.

    融云

    • 一. 准备工作

    官网注册账号 -> 创建项目 -> 获得 App Key -> 应用标识中 填写应用包名.
    先期准备工作 先告一段落.

    • 二. 创建工程

    1) CocoaPods导入融云 SDK, 这个不用解释了, 不会的话, 官网有详细讲解

    pod 'RongCloudIMKit', ‘2.6.7’
    

    2) AppDelegate.m 中引入 融云头文件, 初始化融云SDK

    #import <RongIMKit/RongIMKit.h>
    #import <RongIMLib/RongIMLib.h>
    
    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyWindow];
        
        //初始化融云SDK
        [[RCIM sharedRCIM] initWithAppKey:@"你获得的App Key"];
        
        ViewController *vc = [[ViewController alloc] init];
        UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:vc];
        self.window.rootViewController = navi;
        
     
        return YES;
    }
    

    3) 进入融云后台 API调试 ->点击 用户服务[获取Token] 创建 两组 token与 userId

    举例说明

    4) 融云是以token登陆, 以userId连接对话. 现在回到工程中 在 ViewController中

    引入头文件

    #import <RongIMKit/RCConversationViewController.h>
    #import <RongIMKit/RongIMKit.h>
    
    

    创建UIButton, 点击-(void)clickLoginRongCloud进入融云聊天界面(不用创建VC 融云自带)

    
    
    -(void)clickLoginRongCloud{
    
        //登录融云服务器,开始阶段可以先从融云API调试网站获取,之后token需要通过服务器到融云服务器取。
        NSString*token=@"获取的第一组的token";
        
        
        [[RCIM sharedRCIM] connectWithToken:token success:^(NSString *userId) {
            //设置用户信息提供者,页面展现的用户头像及昵称都会从此代理取
    //        [[RCIM sharedRCIM] setUserInfoDataSource:self];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                //新建一个聊天会话View Controller对象
                RCConversationViewController *chat = [[RCConversationViewController alloc]init];
                //设置会话的类型,如单聊、讨论组、群聊、聊天室、客服、公众服务会话等
                chat.conversationType = ConversationType_PRIVATE;
                //设置会话的目标会话ID。(单聊、客服、公众服务会话为对方的ID,讨论组、群聊、聊天室为会话的ID)
                chat.targetId = @"获取的第二组的userId";  //实现两个账号间通信
    
                //设置聊天会话界面要显示的标题
                chat.title = @"聊一聊";
    
                //显示聊天会话界面
                [self.navigationController pushViewController:chat animated:YES];
                
            });
            
        } error:^(RCConnectErrorCode status) {
            NSLog(@"login error status: %ld.", (long)status);
        } tokenIncorrect:^{
            NSLog(@"token 无效 ,请确保生成token 使用的appkey 和初始化时的appkey 一致");
        }];
    
    }
    

    模拟器上运行 ; 更换 token 与 UserId, 再运行在 真机上, 就可实现 真机与模拟器间即时通讯.

    1. 补充说明 简单的聊天界面完成, 如果你的融合账号创建的项目 是很久之前的, 一直没使用, 那融云会默认 APP Key 失效, 无法在API调试中 获取到token.

    有询问未读消息的tabbar角标怎么设置 作者补充下代码 : 在聊天列表页中

    
    - (instancetype)init
    {
        self = [super init];
        if (self) {    
            /** 关键: 设置类型 */
            [self setDisplayConversationTypes:@[@(ConversationType_PRIVATE), @(ConversationType_GROUP), @(ConversationType_DISCUSSION)]];
            
            [self updateBadgeValueForTabBarItem];
        }
        return self;
    }
    
    -(void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
    
        /** 从聊天详情页 跳出, 重新调用下 */
        [self updateBadgeValueForTabBarItem];
    }
    
    
    /** 消息提醒调用 */
    - (void)notifyUpdateUnreadMessageCount {
      
        [self updateBadgeValueForTabBarItem];
    
    }
    
    /** 消息提醒 */
    - (void)updateBadgeValueForTabBarItem {
        
        __weak typeof(self) __weakSelf = self;
        dispatch_async(dispatch_get_main_queue(), ^{
            
            int count = [[RCIMClient sharedRCIMClient] getUnreadCount:self.displayConversationTypeArray];
    
            if (count > 0) {
               
                __weakSelf.tabBarItem.badgeValue = [[NSString alloc] initWithFormat:@"%d", count];
                
            } else {
                __weakSelf.tabBarItem.badgeValue = nil;    
            }
            
        });
    }
    
    
    

    网易云信

    • 一. 准备工作

    1)官网注册账号 -> 创建项目 -> 获得 App Key -> 标识管理 填写 Bundle Identifier. -> 上传推送证书P12文件

    2) 在云信后台创建的项目中 功能管理 -> 账号管理 中创建两组账号, 云信是以账号, 密码登陆, 以账号连接对话

    • 二. 创建工程

    1) CocoaPods导入云信 SDK, 这个不用解释了, 不会的话, 官网有详细讲解

    pod 'NIMSDK'
    
    • 三. 聊天界面

    云信默认不提供 聊天界面, 它提供 NIMKit 类封装了聊天界面. 从官网下载后, 引入工程中, 但是还没完, 所有功能都需要自己去写. 作者对照官方文档, 将需要写的如 : 正在输入, 已读, 添加文件等 简单功能集成了下. 所用东西都需要自己写, 作者就不上代码了, 直接上demo, 供读者借鉴.

    • 四. demo下载

    传送门 : https://pan.baidu.com/s/1eSbqDW2

    以上 !

    相关文章

      网友评论

      • 孤独的赛跑:最近我也在做网易IM ,可否加下QQ:957961840 交流下
        Mr_Lucifer:评论里 有人做网易IM, 你可以联系一下. 我只是初步看了下 网易云信, 太具体的都忘了.
      • coder小鹏:你做过网易聊天没有??可以加个qq聊聊不??
      • SHyH5:最近在做网易云信的IM,能加个qq交流一下吗
        kinmo:@缘起青萍 我也加
        SHyH5:@缘起青萍 好的
        缘起青萍:我也在做,加个qq吧,我的1506057560

      本文标题:iOS IM即时通讯-[融云] [网易云信]简单集成聊天界面

      本文链接:https://www.haomeiwen.com/subject/dseyettx.html