搜了一下阿里百川, 發現文檔很少, 於是就打算寫一篇博客, 供后來者少華一些時間在集成和開發上.
客戶端集成很簡單, 官方文檔寫的也很清楚.
客戶端的集成
Step1 下載SDK包
-
如果您已經獲得Demo包,則可以跳過這一步
-
打開Demo下載頁面
-
下載iOS Demo並解壓縮。
Step2 添加OpenIM SDK Framework
-
將雲旺(OpenIM) Demo中的
WXFrameworks
目錄直接拖入你的Xcode工程中 -
在彈出的對話框中勾選
Copy items if needed
后,點擊Finish。注意:如果沒有添加
WXOpenIMSDKResource.bundle
,會引起異常Crash。注意:如果沒有添加
WXOUIModuleResources.bundle
,您可能在打開IM頁面時界面元素為空白。注意:目錄中包含的身份圖片
yw_1222.jpg
不能被重命名注意:在你正式發布應用之前,您務必需要使用自己申請的身份圖片,並測試IM功能是否正常。現在,您可以暫時跳過這一步,以便快速的完成集成工作。您可以從以下鏈接中了解如何申請您自己的身份圖片。
-
參見:應用創建和管理
-
參見:您的專屬身份圖片
Step3 添加系統庫
雲旺(OpenIM)依賴於這些系統庫,您需要將他們添加到工程中:
- UIKit.framework
- AddressBook.framework
- SystemConfiguration.framework
- CoreLocation.framework
- CoreTelephony.framework
- CoreData.framework
- libz.tbd
- libstdc++.6.0.9.tbd
- MobileCoreServices.framework
- ImageIO.framework
- AudioToolbox.framework
- AVFoundation.framework
- AssetsLibrary.framework
注意:在xcode7之前的版本,沒有.tbd的庫,而是.dylib
不知道如何添加系統庫?
請參考:如何添加系統庫圖例
Step4 修改編譯選項
-
雲旺(OpenIM) SDK內部使用了ObjectiveC的Category,所以開發者需要在
Target->Linking->Other Linker Flags
中添加-ObjC
選項,以保證這些Category能夠正常工作。不知道如何修改編譯選項?
請參考:如何修改編譯選項注意:請注意
-ObjC
的大小寫。注意:如果您沒有添加
-ObjC
編譯選項,在初始化WXOSdk時會發生crash。 -
完成以上5步后,您的鏈接庫和資源拷貝應該類似於:
Step5 拖入膠水代碼,最快捷的集成方式
-
膠水代碼
顧名思義就是將您的App和IMSDK粘合起來的中間代碼。其中包含對IMSDK主流程接口的調用代碼,例如初始化、登錄准備、登錄、注銷、打開會話列表、打開聊天頁面等。
注意:Demo提供了基礎的膠水代碼,你可以將其拖動到工程中。並且在
didFinishLaunchingWithOptions:
、你App的用戶登錄成功
、你App的用戶注銷
這幾個函數中調用幾個基礎入口膠水函數
,可完成初步的集成。基礎入口膠水函數:
我們把在相同時刻調用的多個膠水函數匯聚到了幾個入口膠水函數
中,如下:callThisInDidFinishLaunching
callThisAfterISVAccountLoginSuccessWithYWLoginId
callThisBeforeISVAccountLogout
注意:進一步地,膠水代碼(
SPKitExample.m
)中包含了特地設置的#warning
,請仔細閱讀這些warning的注釋,根據實際情況調整代碼,以符合你的需求。 -
拖動到工程
在
WXOpenIMSampleRelease/WXOpenIMSampleDev/
目錄找到MainLogic
和Customize
這兩個子目錄,拖動到工程中,在彈出的對話框中勾選Copy items if needed
后,點擊Finish -
注意:
膠水代碼
並不屬於IMSDK的一部分,而只是對IMSDK接口調用的進一步集中整合,你當然也可以不通過膠水代碼的方式集成IMSDK,參考Demo工程膠水代碼對IMSDK的使用方式,自己編寫膠水代碼
。
Step6 初始化IMSDK
-
引入膠水代碼頭文件
SPKitExample.h
,調用基礎入口膠水函數
:callThisInDidFinishLaunching
一般在-[AppDelegate didFinishLaunchingWithOptions:]函數中初始化IMSDK
#import "SPKitExample.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[SPKitExample sharedInstance] callThisInDidFinishLaunching]; return YES; }
-
基礎入口膠水函數
:callThisInDidFinishLaunching
,其中包含:步驟 函數 初始化 exampleInit 設置APNSPush處理回調 exampleHandleAPNSPush 設置全局導航欄顏色 exampleCustomGlobleNavigationBar 注意:
exampleInit
中23015524
是Demo中使用的示例AppKey。您需要在申請App成功后,替換為您的AppKey。在快速集成時,你可以先跳過申請App這個步驟。 - 這樣, 差不多客戶端就集成的差不多了, 我這里想說的是:其實上面寫那么麻煩, 其實你只要把
- 這demo中的這兩個文件夾拖到你的工程, 在庫文件的頁面跟demo比對一下, 然后再導入一些需要的系統的庫, 在
WXOpenIMSampleRelease/WXOpenIMSampleDev/
目錄找到MainLogic
和Customize
這兩個子目錄,拖到你的工程中,然后 在Target->Linking->Other Linker Flags
中添加-ObjC
選項,以保證這些Category能夠正常工作, 編譯一下, 會出現方法找不到的錯誤, 那是你沒導入BarButomn的一個類目, 在demo中找到他, 導入就OK了.
服務端的集成
在這個頁面http://open.taobao.com/docs/api.htm?spm=a219a.7395905.0.0.WmFTMt&scopeId=11574&apiId=25830查看要用的一些api, 然后可以在這個頁面http://open.taobao.com/apitools/apiTools.htm?spm=a219a.7395905.0.0.6teRU2&catId=20654&apiId=26112&apiName=taobao.openim.chatlogs.import&scopeId=11574對個API進行測試.
我服務器語言對php比較熟, 所以服務端選擇了php的topSDK, 大家可以根據自己的情況選擇. 在本地開服務器進行測試, 如果可以, 恭喜你, 服務端的集成就OK了.
開發完成后, 就可以將它掛到服務器上了.