首先登录云通讯网站点这里,下载SDK后,里面包含了用到的SDK和demo。我目前用的版本是3.2.0,基础集成的话看官方文档就可以了。这里说的是使用独立模式进行集成,文档中基础集成完成后就需要根据具体需求使用具体的SDK里面的API了,由于公司只需要使用聊天功能,用到的也就是即时聊天和群聊功能了。
初始化SDK,在 AppDelegate.m 中的 didFinishLaunchingWithOptions 方法中
//初始化TIMSDK
TIMManager *manager = [TIMManager sharedInstance];
TIMSdkConfig *sdkConfig = [[TIMSdkConfig alloc]init];
sdkConfig.disableCrashReport = YES; // 是否上报cash日志,可在云通讯控制台查看
sdkConfig.sdkAppId = @"你的APPID"; // APPID,生成APP时返回的ID
sdkConfig.accountType = @"7221"; // 账号类型,生成时返回
[manager initSdk:sdkConfig]; // 初始化
// 绑定当前用户配置信息
TIMUserConfig *user = [[TIMUserConfig alloc]init];
user.userStatusListener = self; // 用户登录状态监听,具体有哪些功能可以点进去看
[manager setUserConfig:user];
云通讯需要用户登陆后才可以使用,所以初始化完成后应该是APP的登录界面,由于是独立模式,所以在登录过程中需要服务器做好跟腾讯服务器的对接,这样我们的账号可以直接登录使用。
// 在写好的登录界面中,实现登录方法
[[TIMManager sharedInstance] login:param succ:^{
NSLog(@"登录成功:%@ tinyid:%llu sig:%@", param.identifier, [[IMSdkInt sharedInstance] getTinyId], param.userSig);
}fail:^(intcode,NSString*msg) {
NSLog(@"TIMLogin Failed: code=%d err=%@", code, msg);
if(code == kEachKickErrorCode)
{
//互踢重联,重新再登录一次
//下面这句代码是 demo 中做好的互踢重连的方法,也可以自己实现相应功能
// [ws offlineKicked:param succ:succ fail:fail];
}
}];
#define kEachKickErrorCode 6208 // 互踢下线码
登录完成之后获取用户的好友列表,点击其中的好友跳转到聊天界面,聊天界面可以自己实现,也可以用 demo 中封装好的聊天界面。到此,一个即时聊天的流程算是完成了,其他细节的东西可以跟着 demo 看看。
// 获取好友列表
[[TIMFriendshipManager sharedInstance] getFriendList:^(NSArray * arr) {
[tabDatasetArray:arr];
[tab reloadData]; // tab 是个 mutableArray
for(TIMUserProfile* profileinarr) {
NSLog(@"好友列表: %@", profile.identifier);
}
}fail:^(intcode,NSString* err) {
NSLog(@"获取好友列表失败: code=%d err=%@", code, err);;
}];
// TIMConversation 会话结构体,用来发送消息
TIMConversation *_conversation = [[TIMManager sharedInstance] getConversation:TIM_C2C receiver:[user userId]];
// 其中,TIM_C2C 表示单对单聊天,[user userId] 是上面获取到的好友列表之后,选中进行聊天的好友 ID
[_conversation sendMessage:msg succ:^{
NSLog(@"消息发送成功");
}fail:^(intcode,NSString*err) {
NSLog(@"发送消息失败");
}];
// 发送消息中的 msg 是 TIMMessage 的一个实例,实现如下:
TIMTextElem *elem = [[TIMTextElem alloc] init];
elem.text= text; // text 为用户输入的文本
TIMMessage *msg = [[TIMMessage alloc] init];
[msg addElem:elem];