iOS-集成阿里百川IMSDK的服務端及客戶端


搜了一下阿里百川, 發現文檔很少, 於是就打算寫一篇博客, 供后來者少華一些時間在集成和開發上.

客戶端集成很簡單, 官方文檔寫的也很清楚.

客戶端的集成

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/目錄找到MainLogicCustomize這兩個子目錄,拖動到工程中,在彈出的對話框中勾選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

    注意: exampleInit23015524是Demo中使用的示例AppKey。您需要在申請App成功后,替換為您的AppKey。在快速集成時,你可以先跳過申請App這個步驟。

  • 這樣, 差不多客戶端就集成的差不多了, 我這里想說的是:其實上面寫那么麻煩, 其實你只要把
  • 這demo中的這兩個文件夾拖到你的工程, 在庫文件的頁面跟demo比對一下, 然后再導入一些需要的系統的庫, 在WXOpenIMSampleRelease/WXOpenIMSampleDev/目錄找到MainLogicCustomize這兩個子目錄,拖到你的工程中,然后 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了.

開發完成后, 就可以將它掛到服務器上了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM