搜了一下阿里百川, 发现文档很少, 于是就打算写一篇博客, 供后来者少华一些时间在集成和开发上.

客户端集成很简单, 官方文档写的也很清楚.

客户端的集成

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了.

开发完成后, 就可以将它挂到服务器上了.

iOS-集成阿里百川IMSDK的服务端及客户端的更多相关文章

  1. iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页

      公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...

  2. ios 集成阿里百川的坑-【SDK初始化-iOS】读取身份图片AppKey失败

    最简易方法调用淘宝app: 引用文件 #import <AlibcTradeSDK/AlibcTradeSDK.h> AlibcWebViewController* view = [[Al ...

  3. 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)

    1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...

  4. IOS IAP APP内支付 Java服务端代码

    IOS IAP APP内支付 Java服务端代码   场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...

  5. 如何排查APP服务端和客户端是否支持ATS

    服务端排查 取得客户端直接连接的服务端域名及端口,例如mob.com.cn,端口443,即HTTPS默认端口.针对公网可访问的生产环境地址,建议使用的在线监测工具.https://wosign.ssl ...

  6. 使用Apache CXF开发WebServices服务端、客户端

    在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...

  7. Netty学习笔记(二) 实现服务端和客户端

    在Netty学习笔记(一) 实现DISCARD服务中,我们使用Netty和Python实现了简单的丢弃DISCARD服务,这篇,我们使用Netty实现服务端和客户端交互的需求. 前置工作 开发环境 J ...

  8. Java的oauth2.0 服务端与客户端的实现

    oauth原理简述 oauth本身不是技术,而是一项资源授权协议,重点是协议!Apache基金会提供了针对Java的oauth封装.我们做Java web项目想要实现oauth协议进行资源授权访问,直 ...

  9. 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表

    1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...

随机推荐

  1. 浅谈Java中的深拷贝和浅拷贝(转载)

    浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...

  2. UESTC 915 方老师的分身II --最短路变形

    即求从起点到终点至少走K条路的最短路径. 用两个变量来维护一个点的dis,u和e,u为当前点的编号,e为已经走过多少条边,w[u][e]表示到当前点,走过e条边的最短路径长度,因为是至少K条边,所以大 ...

  3. UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)

    题意:给一个元素周期表的元素符号(114种),再给一个串,问这个串能否有这些元素符号组成(全为小写). 解法1:动态规划 定义:dp[i]表示到 i 这个字符为止,能否有元素周期表里的符号构成. 则有 ...

  4. 给定一个整数实现奇偶bit位互换

    1.分别取出所有奇数bit位和偶数bit位 0x55555555(对应二进制奇数bit位为1,偶数bit位全为0)&num 0xaaaaaaaa(对应二进制即偶数bit位为1,奇数bit位全为 ...

  5. uGUI VS NGUI

    前言 这篇日志的比较是根据自己掌握知识所写的,请各路大神多多指教. 引擎版本: Unity 4.6 beta 两者区别 1.uGUI的Canvas 有世界坐标和屏幕坐标 2.uGUI的Button属性 ...

  6. IL查看override

    查看override的IL Override示例 下面我们看一个Override的Example namespace MyCollection { public class MyBase { publ ...

  7. 安装多个版本的unity

    版本特性导致新版本Unity打开老版本的项目工程报错,所以最好在电脑上安装多个不同版本的Unity 方法一 安装目录命名:Unity_3.5 , Unity_4.3.1 确保默认例子的安装路径分开C: ...

  8. yum标准化安装nginx最新版

    yum标准化安装nginx最新版 cat > /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.o ...

  9. [Python] 利用commands模块执行Linux shell命令

    http://blog.csdn.net/dbanote/article/details/9414133 http://zhou123.blog.51cto.com/4355617/1312791

  10. 加密算法使用(一):用CRC32来压缩32uuid字符串

    CRC32相比MD5重复率较高, 不过我们仍然可以使用CRC32然后转长整形的方式将32位的UUID字符串压缩成更短的整形唯一标识. /** * * @Title: getCRC32Value * @ ...