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

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

客户端的集成

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. atomic, spinlock and mutex性能比较

    我非常好奇于不同同步原理的性能,于是对atomic, spinlock和mutex做了如下实验来比较: 1. 无同步的情况 #include <future> #include <i ...

  2. Regarding learning

    when you learn something, just like learn computer language. if you just learn some basic usage, not ...

  3. 为Secure Store Service生成新密钥,解决“生成密钥过程中发现错误”的问题

    我们集成TFS和SharePoint Server以后,一个最常见的需求是通过SharePoint Server的Excel Service读取TFS报表中的信息,利用Excel Service的强大 ...

  4. Java实现事件机制

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event sourc ...

  5. codeforces 484B B. Maximum Value(二分)

    题目链接: B. Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standa ...

  6. Unity-WIKI 之 DebugConsole

    功能预览 使用说明 1.把 DebugConsole.cs 放在 Standard Assets 目录下(重要) 2.如果你想修改 DebugConsole的一些参数,把DebugConsole.cs ...

  7. Asp.net mvc项目架构分享系列之架构搭建初步

    copy to:http://www.cnblogs.com/ben121011/p/5014795.html 项目架构各部分解析 Core Models IDAL MSSQLDAL IBLL BLL ...

  8. 分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题

    之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbi ...

  9. 图解HTTP看书体会(1)

    MAC地址和IP地址的区别与联系 一.IP地址 对于IP地址,相信大家都很熟悉,即指使用TCP/IP协议指定给主机的32位地址.IP地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个 ...

  10. Java连接Elasticsearch集群

    package cn.test; import java.net.InetAddress; import java.net.UnknownHostException; import org.elast ...