iOS-集成阿里百川IMSDK的服务端及客户端
2016-08-28 19:21
141 查看
搜了一下阿里百川, 发现文档很少, 于是就打算写一篇博客, 供后来者少华一些时间在集成和开发上.
客户端集成很简单, 官方文档写的也很清楚.
打开Demo下载页面
下载iOS Demo并解压缩。
在弹出的对话框中勾选
注意:如果没有添加
注意:如果没有添加
注意:目录中包含的身份图片
注意:在你正式发布应用之前,您务必需要使用自己申请的身份图片,并测试IM功能是否正常。现在,您可以暂时跳过这一步,以便快速的完成集成工作。您可以从以下链接中了解如何申请您自己的身份图片。
参见:应用创建和管理
参见:您的专属身份图片
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
注意:请注意
注意:如果您没有添加
完成以上5步后,您的链接库和资源拷贝应该类似于:
顾名思义就是将您的App和IMSDK粘合起来的中间代码。其中包含对IMSDK主流程接口的调用代码,例如初始化、登录准备、登录、注销、打开会话列表、打开聊天页面等。
注意:Demo提供了基础的胶水代码,你可以将其拖动到工程中。并且在
注意:进一步地,胶水代码(
拖动到工程
在
注意:
一般在-[AppDelegate didFinishLaunchingWithOptions:]函数中初始化IMSDK
注意:
这样, 差不多客户端就集成的差不多了, 我这里想说的是:其实上面写那么麻烦, 其实你只要把
这demo中的这两个文件夹拖到你的工程, 在库文件的页面跟demo比对一下, 然后再导入一些需要的系统的库, 在
我服务器语言对php比较熟, 所以服务端选择了php的topSDK, 大家可以根据自己的情况选择. 在本地开服务器进行测试, 如果可以, 恭喜你, 服务端的集成就OK了.
开发完成后, 就可以将它挂到服务器上了.
客户端集成很简单, 官方文档写的也很清楚.
客户端的集成
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了.
开发完成后, 就可以将它挂到服务器上了.
相关文章推荐
- iOS客户端上传图片到Java服务端
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(四)——Android端Http访问类
- 基于RSA算法的ios客户端加密和C#服务端解密的解决方案
- IOS集成支付宝客户端支付,编译不过(1)
- IOS客户端静态扫描持续集成搭建
- 服务端数据校验及客户端js脚本验证集成处理初探(附源码)
- IOS 消息推送 服务端和客户端
- “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX
- iOS推送小结(证书的生成、客户端的开发、服务端的开发)
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM——Android端消息处理机制
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(三)——搭建Android开发环境,用Hibernate生成Android项目的Model层
- socket;ios客户端与php服务端交互(补充html5+python服务端+ios客户端)
- 在iOS客户端实现google oauth2登录以及在asp.net服务端上form认证
- iOS推送小结(证书的生成、客户端的开发、服务端的开发)
- IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(五)——Android端消息处理机制
- svn服务端客户端集成到eclipse中步骤
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(二)——“请求”“交互”与传输数据(服务器端)
- iOS—如何在客户端和服务端配置APNs远程推送通知的方法
- iOS推送小结(证书的生成、客户端的开发、服务端的开发)