关注iOS开发技术分享iOS 开发每天分享优质文章

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

2016-10-18  本文已影响118人  鸽z1陰蘭

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

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

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];

上一篇 下一篇

猜你喜欢

热点阅读