融云即时通讯(从服务器获取token)

经历了繁忙的项目期,终于有时间闲下来总结一下项目中即时通讯遇到的问题。

使用即时通讯的流程,在融云官方网站有详细的介绍,在这里不在详细的介绍。这里收录一些我在项目中遇到的问题。

1.系统依赖库的添加,如果您使用的是Xcode 6.X版本,则需要将上面的动态库*.tbd的后缀改为*.dylib。 如果您没有使用IMKit的所有功能,有些库可能并非必须

AssetsLibrary.framework       AudioToolbox.framework     AVFoundation.framework       CFNetwork.framework      CoreAudio.framework        CoreGraphics.framework          CoreLocation.framework       CoreMedia.framework      CoreTelephony.framework         CoreVideo.framework         ImageIO.framework         libc++.tbd           libc++abi.tbd        libsqlite3.tbd         libstdc++.tbd         libxml2.tbd          libz.tbd       MapKit.framework        OpenGLES.framework          QuartzCore.framework       SystemConfiguration.framework        UIKit.framework       Photos.framework

2.设置plist支持http


设置支持http

3.利用请求从服务器端获取token。

因为获取 Token 时需要提供 App Key 和 App Secret。如果在客户端请求 Token,假如您的 App 代码一旦被反编译,则会导致您的 App Key和App Secret 泄露。所以,务必在您的服务器端获取 Token。

AFHTTPRequestOperationManager*mgr = [AFHTTPRequestOperationManagermanager];

//服务器请求链接地址

NSString*urlstr =@"https://api.cn.rong.io/user/getToken.json";

//请求参数userID:用户唯一标识name:用户名portraitUri:用户头像链接

NSDictionary*parm =@{@"userId":PHONE,

@"name":USERNAME,

@"portraitUri":USERImage

};

NSString* timestamp = [[NSStringalloc]initWithFormat:@"%ld",(long)[NSDatetimeIntervalSinceReferenceDate]];

NSString* nonce = [NSStringstringWithFormat:@"%d",arc4random()];

//创建应用得到的appKey

NSString* appkey =RCAPPKey;

//签名

NSString*Signature = [[NSStringstringWithFormat:@"%@%@%@",appkey,nonce,timestamp]base64EncodedString];

//以下是拼接请求内容

[mgr.requestSerializersetValue:nonceforHTTPHeaderField:@"Nonce"];

[mgr.requestSerializersetValue:appkeyforHTTPHeaderField:@"App-Key"];

[mgr.requestSerializersetValue:SignatureforHTTPHeaderField:@"Signature"];

[mgr.requestSerializersetValue:timestampforHTTPHeaderField:@"Timestamp"];

[mgr.requestSerializersetValue:RCAPPSecretforHTTPHeaderField:@"appSecret"];

[mgr.requestSerializersetValue:@"application/x-www-form-urlencoded"forHTTPHeaderField:@"Content-Type"];

//开始请求

[mgrPOST:urlstrparameters:parmsuccess:^(AFHTTPRequestOperation*operation,idresponseObject) {

//这里你就能得到token啦~

NSLog(@"%@", responseObject);

NSString*token = responseObject[@"token"];

[[RCIMsharedRCIM]connectWithToken:tokensuccess:^(NSString*userId) {

NSLog(@"登陆成功,用户ID为:%@",userId);

}error:^(RCConnectErrorCodestatus) {

NSLog(@"登录的错误码为:%ld",(long)status);

}tokenIncorrect:^{

NSLog(@"token错误");

}];

}failure:^(AFHTTPRequestOperation*operation,NSError*error) {

}];

4.聊天对话页面

RCConversationViewController*chat = [[RCConversationViewControlleralloc]init];

chat.conversationType=ConversationType_PRIVATE;

chat.targetId= model.username;

chat.title= [NSStringstringWithFormat:@"与%@聊天",model.nickname];

[self.navigationControllerpushViewController:chatanimated:YES];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容