前言
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, 再运行在 真机上, 就可实现 真机与模拟器间即时通讯.
- 补充说明 简单的聊天界面完成, 如果你的融合账号创建的项目 是很久之前的, 一直没使用, 那融云会默认 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
以上 !