標籤:
iOS SDK 介紹
環信 SDK 為使用者開發 IM 相關的應用提供的一套完善的開發架構。包括以下幾個部分:
- SDK_Core: 為核心的訊息同步協議實現,完成與伺服器之間的資訊交換。
- SDK: 是基於核心協議實現的完整的 IM 功能,實現了不同類型訊息的收發、會話管理、群組、好友、聊天室等功能。
- EaseUI: 是一群組 IM 相關的 UI 控制項,旨在協助開發人員快速整合環信 SDK。
使用者可以基於我們提供的 Demo 實現自己的應用,也可以基於 SDK 開發自己應用。
SDK 採用模組化設計,每一模組的功能相對獨立和完善,使用者可以根據自己的需求選擇使用下面的模組:
- EMClient: 是 SDK 的入口,主要完成登入、退出、串連管理等功能。也是擷取其他模組的入口。
- EMChatManager: 管理訊息的收發,完成會話管理等功能。
- EMContactManager: 負責好友的添加刪除,黑名單的管理。
- EMGroupManager: 負責群組的管理,建立、刪除群組,管理群組成員等功能。
- EMChatroomManager: 負責聊天室的管理。
注意:如果您是從 SDK2.x 升級到 3.0,可以參考環信 SDK 2.x到3.0升級文檔
第三方庫介紹
EaseUI 中用到的第三方庫:
- MWPhotoBrowser: 圖片處理庫,瀏覽顯示
- MJRefresh: 用於頁面重新整理
- MBProgressHUD: 用於提示載入重新整理
- libopencore-amrnb.a,libopencore-amrwb.a: 用於 amr 與 wav 之間的轉換
Demo 中用到的第三方庫:
- Parse.framework、Bolts.framework: Demo 中的使用者資訊儲存在 Parse,這兩個庫是 Parse 所需要的庫,開發人員如果沒用 Parse 儲存,不要複製到自己項目中
- libMobClickLibrary.a: 友盟相關的庫,用於環信 Demo 基本資料的統計,開發人員不用或者已有別的版本的庫不要複製到自己項目
配置工程 匯入 SDK
將下載好的 SDK 檔案夾(HyphenateSDK)拖入到項目中,並勾選上 Destination。
設定工程屬性
第 1 步:向Build Phases → Link Binary With Libraries 中添加依賴庫。
SDK 依賴庫有:
- CoreMedia.framework
- AudioToolbox.framework
- AVFoundation.framework
- MobileCoreServices.framework
- ImageIO.framework
- libc++.dylib
- libz.dylib
- libstdc++.6.0.9.dylib
- libsqlite3.dylib
(如果使用的是 xcode7,尾碼為 tbd。)
SDK 包含即時語音依賴庫有:
- CoreMedia.framework
- AudioToolbox.framework
- AVFoundation.framework
- MobileCoreServices.framework
- ImageIO.framework
- libc++.dylib
- libz.dylib
- libstdc++.6.0.9.dylib
- libsqlite3.dylib
- libiconv.dylib
(如果使用的是 xcode7,尾碼為 tbd。)
第 2 步:SDK 不支援 bitcode,向 Build Settings → Linking → Enable Bitcode 中設定 NO。
編譯工程
以上步驟進行完後,編譯工程。如果沒有報錯,恭喜你,整合 SDK 成功,可以進行下一步了。
初始化 SDK
第 1 步:引入相關標頭檔 #import “EMSDK.h”。
第 2 步:在工程的 AppDelegate 中的以下方法中,調用 SDK 對應方法。
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 2 { 3 //AppKey:註冊的AppKey,詳細見下面注釋。 4 //apnsCertName:推送認證名(不需要加尾碼),詳細見下面注釋。 5 EMOptions *options = [EMOptions optionsWithAppkey:@"douser#istore"]; 6 options.apnsCertName = @"istore_dev"; 7 [[EMClient sharedClient] initializeSDKWithOptions:options]; 8 9 return YES;10 }11 12 // APP進入後台13 - (void)applicationDidEnterBackground:(UIApplication *)application14 {15 [[EMClient sharedClient] applicationDidEnterBackground:application];16 }17 18 // APP將要從後台返回19 - (void)applicationWillEnterForeground:(UIApplication *)application20 {21 [[EMClient sharedClient] applicationWillEnterForeground:application];22 }
調用的 SDK 介面參數解釋如下:
- AppKey: 區別 APP 的標識,參考開發人員註冊及管理後台。
- apnsCertName: iOS 中推送認證名稱,參考製作與上傳推送認證。
環信為 IM 部分提供了 APNS 推送功能,如果您要使用,請跳轉到APNS離線推送。
註冊
註冊模式分兩種,開放註冊和授權註冊。
- 只有開放註冊時,才可以用戶端註冊。開放註冊是為了測試使用,正式環境中不推薦使用該方式註冊環信帳號。
- 授權註冊的流程應該是您伺服器通過環信提供的 REST API 註冊,之後儲存到您的伺服器或返回給用戶端。
1 #import "RegistViewController.h" 2 #import "EMSDK.h" // 環信的架構 3 @interface RegistViewController () 4 // 使用者名稱 5 @property (weak, nonatomic) IBOutlet UITextField *userNameTextFiled; 6 7 // 密碼 8 @property (weak, nonatomic) IBOutlet UITextField *passwordTextField; 9 10 11 @end12 13 @implementation RegistViewController14 15 - (void)viewDidLoad {16 [super viewDidLoad];17 // Do any additional setup after loading the view.18 }19 20 // 點擊註冊按鈕21 - (IBAction)didClickRegistButton:(id)sender {22 23 if (self.userNameTextFiled.text.length == 0 || self.passwordTextField.text.length == 0) {24 NSLog(@"使用者名稱密碼不可為空");25 return;26 }27 28 // 環信的註冊方法29 30 EMError *error = [[EMClient sharedClient] registerWithUsername:self.userNameTextFiled.text password:self.passwordTextField.text];31 NSLog(@"error = %@", error);32 if (!error) {33 NSLog(@"註冊成功");34 }35 36 }登入
登入:調用 SDK 的登入介面進行的操作。
1 #import "ViewController.h" 2 #import "EMSDK.h" 3 @interface ViewController () 4 // 使用者名稱 5 @property (weak, nonatomic) IBOutlet UITextField *UserNameFiledText; 6 7 // 密碼 8 @property (weak, nonatomic) IBOutlet UITextField *passwordFieldText; 9 10 11 @end12 13 @implementation ViewController14 15 - (void)viewDidLoad {16 [super viewDidLoad];17 // Do any additional setup after loading the view, typically from a nib.18 }19 20 21 // 登入按鈕22 - (IBAction)loginClickButton:(id)sender {23 24 if (self.UserNameFiledText.text.length == 0 || self.passwordFieldText.text.length == 0) {25 NSLog(@"使用者名稱密碼不可為空");26 }27 28 // 環信登入的方法29 EMError *error = [[EMClient sharedClient] loginWithUsername:self.UserNameFiledText.text password:self.passwordFieldText.text];30 NSLog(@"%@", error);31 if (!error) {32 NSLog(@"登入成功");33 // 返回會話列表34 35 [self dismissViewControllerAnimated:YES completion:nil];36 }37 38 }自動登入
自動登入:即首次登入成功後,不需要再次調用登入方法,在下次 APP 啟動時,SDK 會自動為您登入。並且如果您自動登入失敗,也可以讀取到之前的會話資訊。
SDK 中自動登入屬性預設是關閉的,需要您在登入成功後設定,以便您在下次 APP 啟動時不需要再次調用環信登入,並且能在沒有網的情況下得到會話列表。
1 EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"];2 if (!error)3 {4 [[EMClient sharedClient].options setIsAutoLogin:YES];5 }
iOS SDK 介紹及匯入