融云即時通訊(從服務器獲取token)

經(jīng)歷了繁忙的項目期,終于有時間閑下來總結一下項目中即時通訊遇到的問題。

使用即時通訊的流程,在融云官方網(wǎng)站有詳細的介紹,在這里不在詳細的介紹。這里收錄一些我在項目中遇到的問題。

1.系統(tǒng)依賴庫的添加,如果您使用的是Xcode 6.X版本,則需要將上面的動態(tài)庫*.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";

//請求參數(shù)userID:用戶唯一標識name:用戶名portraitUri:用戶頭像鏈接

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

@"name":USERNAME,

@"portraitUri":USERImage

};

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

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

//創(chuàng)建應用得到的appKey

NSString* appkey =RCAPPKey;

//簽名

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

//以下是拼接請求內(nèi)容

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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容