版本記錄
版本號(hào) | 時(shí)間 |
---|---|
V1.0 | 2017.06.08 |
前言
很多app種都集成環(huán)信做第三方信息通訊工具,這里我們就看一下環(huán)信的主要功能和集成方法。先給出環(huán)信3.0的地址。
感興趣的可以參考:
1. 環(huán)信ios客戶端的集成(一)
2. 環(huán)信ios客戶端的集成(二)
這一篇主要說(shuō)一下環(huán)信的基礎(chǔ)功能。
一、初始化 SDK
第 1 步:引入相關(guān)頭文件 #import <HyphenateLite/EMSDK.h>。
第 2 步:在工程的 AppDelegate 中的以下方法中,調(diào)用 SDK 對(duì)應(yīng)方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//AppKey:注冊(cè)的AppKey,詳細(xì)見(jiàn)下面注釋。
//apnsCertName:推送證書(shū)名(不需要加后綴),詳細(xì)見(jiàn)下面注釋。
EMOptions *options = [EMOptions optionsWithAppkey:@"douser#istore"];
options.apnsCertName = @"istore_dev";
[[EMClient sharedClient] initializeSDKWithOptions:options];
return YES;
}
// APP進(jìn)入后臺(tái)
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[EMClient sharedClient] applicationDidEnterBackground:application];
}
// APP將要從后臺(tái)返回
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[EMClient sharedClient] applicationWillEnterForeground:application];
}
調(diào)用的 SDK 接口參數(shù)解釋如下:
- AppKey: 區(qū)別 APP 的標(biāo)識(shí),參考開(kāi)發(fā)者注冊(cè)及管理后臺(tái)。
- apnsCertName: iOS 中推送證書(shū)名稱,參考制作與上傳推送證書(shū)。
- 環(huán)信為 IM 部分提供了 APNS 推送功能,如果您要使用,請(qǐng)?zhí)D(zhuǎn)到APNS離線推送。
二、注冊(cè)
注冊(cè)模式分兩種,開(kāi)放注冊(cè)和授權(quán)注冊(cè)。
- 只有開(kāi)放注冊(cè)時(shí),才可以客戶端注冊(cè)。開(kāi)放注冊(cè)是為了測(cè)試使用,正式環(huán)境中不推薦使用該方式注冊(cè)環(huán)信賬號(hào)。
- 授權(quán)注冊(cè)的流程應(yīng)該是您服務(wù)器通過(guò)環(huán)信提供的 REST API 注冊(cè),之后保存到您的服務(wù)器或返回給客戶端。
EMError *error = [[EMClient sharedClient] registerWithUsername:@"8001" password:@"111111"];
if (error==nil) {
NSLog(@"注冊(cè)成功");
}
三、登錄
登錄:調(diào)用 SDK 的登錄接口進(jìn)行的操作。
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error) {
NSLog(@"登錄成功");
}
四、自動(dòng)登錄
自動(dòng)登錄:即首次登錄成功后,不需要再次調(diào)用登錄方法,在下次 APP 啟動(dòng)時(shí),SDK 會(huì)自動(dòng)為您登錄。并且如果您自動(dòng)登錄失敗,也可以讀取到之前的會(huì)話信息。
SDK 中自動(dòng)登錄屬性默認(rèn)是關(guān)閉的,需要您在登錄成功后設(shè)置,以便您在下次 APP 啟動(dòng)時(shí)不需要再次調(diào)用環(huán)信登錄,并且能在沒(méi)有網(wǎng)的情況下得到會(huì)話列表。
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
if (!error)
{
[[EMClient sharedClient].options setIsAutoLogin:YES];
}
自動(dòng)登錄在以下幾種情況下會(huì)被取消:
- 用戶調(diào)用了 SDK 的登出動(dòng)作;
- 用戶在別的設(shè)備上更改了密碼,導(dǎo)致此設(shè)備上自動(dòng)登錄失敗;
- 用戶的賬號(hào)被從服務(wù)器端刪除;
- 用戶從另一個(gè)設(shè)備登錄,把當(dāng)前設(shè)備上登錄的用戶踢出。
所以,在您調(diào)用登錄方法前,應(yīng)該先判斷是否設(shè)置了自動(dòng)登錄,如果設(shè)置了,則不需要您再調(diào)用。
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;
if (!isAutoLogin) {
EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];
}
SDK 中,如果發(fā)生自動(dòng)登錄,會(huì)有以下回調(diào):
/*!
* 自動(dòng)登錄返回結(jié)果
*
* @param error 錯(cuò)誤信息
*/
- (void)autoLoginDidCompleteWithError:(EMError *)error
//添加回調(diào)監(jiān)聽(tīng)代理:
[[EMClient sharedClient] addDelegate:self delegateQueue:nil];
五、重連
當(dāng)?shù)艟€時(shí),iOS SDK 會(huì)自動(dòng)重連,只需要監(jiān)聽(tīng)重連相關(guān)的回調(diào),無(wú)需進(jìn)行任何操作。
/*!
* SDK連接服務(wù)器的狀態(tài)變化時(shí)會(huì)接收到該回調(diào)
*
* 有以下幾種情況,會(huì)引起該方法的調(diào)用:
* 1. 登錄成功后,手機(jī)無(wú)法上網(wǎng)時(shí),會(huì)調(diào)用該回調(diào)
* 2. 登錄成功后,網(wǎng)絡(luò)狀態(tài)變化時(shí),會(huì)調(diào)用該回調(diào)
*
* @param aConnectionState 當(dāng)前狀態(tài)
*/
- (void)connectionStateDidChange:(EMConnectionState)aConnectionState;
六、退出登錄
退出登錄分兩種類型:主動(dòng)退出登錄和被動(dòng)退出登錄。
- 主動(dòng)退出登錄:調(diào)用 SDK 的退出接口;
- 被動(dòng)退出登錄:
- 正在登錄的賬號(hào)在另一臺(tái)設(shè)備上登錄;
- 正在登錄的賬號(hào)被從服務(wù)器端刪除。
logout:YES:是否解除 device token 的綁定,在被動(dòng)退出時(shí) SDK 內(nèi)部處理,不需要調(diào)用退出方法。
EMError *error = [[EMClient sharedClient] logout:YES];
if (!error) {
NSLog(@"退出成功");
}
七、被動(dòng)退出登錄
使用回調(diào)方法監(jiān)聽(tīng)被動(dòng)退出登錄。
/*!
* 當(dāng)前登錄賬號(hào)在其它設(shè)備登錄時(shí)會(huì)接收到該回調(diào)
*/
- (void)userAccountDidLoginFromOtherDevice;
/*!
* 當(dāng)前登錄賬號(hào)已經(jīng)被從服務(wù)器端刪除時(shí)會(huì)收到該回調(diào)
*/
- (void)userAccountDidRemoveFromServer;
后記
希望對(duì)大家有所幫助,未完,待續(xù)~~~