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/
目录找到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-集成阿里百川IMSDK的服务端及客户端的更多相关文章
- iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页
公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...
- ios 集成阿里百川的坑-【SDK初始化-iOS】读取身份图片AppKey失败
最简易方法调用淘宝app: 引用文件 #import <AlibcTradeSDK/AlibcTradeSDK.h> AlibcWebViewController* view = [[Al ...
- 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)
1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...
- IOS IAP APP内支付 Java服务端代码
IOS IAP APP内支付 Java服务端代码 场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...
- 如何排查APP服务端和客户端是否支持ATS
服务端排查 取得客户端直接连接的服务端域名及端口,例如mob.com.cn,端口443,即HTTPS默认端口.针对公网可访问的生产环境地址,建议使用的在线监测工具.https://wosign.ssl ...
- 使用Apache CXF开发WebServices服务端、客户端
在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...
- Netty学习笔记(二) 实现服务端和客户端
在Netty学习笔记(一) 实现DISCARD服务中,我们使用Netty和Python实现了简单的丢弃DISCARD服务,这篇,我们使用Netty实现服务端和客户端交互的需求. 前置工作 开发环境 J ...
- Java的oauth2.0 服务端与客户端的实现
oauth原理简述 oauth本身不是技术,而是一项资源授权协议,重点是协议!Apache基金会提供了针对Java的oauth封装.我们做Java web项目想要实现oauth协议进行资源授权访问,直 ...
- 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表
1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...
随机推荐
- ubuntu16.04 安装网易云音乐
最爱的播放器 网易云音乐 哈哈,刚刚折腾了双系统,立马开始了软件安装. 网易云音乐从官网下载对应的 64 位版本,我下载的是 netease-cloud-music_1.0.0_amd64_ubunt ...
- 动手学习TCP:数据传输
前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...
- 使用EntityFramework6完成增删查改和事务
使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库进行操作, ...
- nopcommerce里面的@Html.Widget("home_page_top") 是什么?
很多朋友在修改模板的时候看到很多类似@Html.Widget("xxx")的东西,这里简单介绍一下流程: 比如@Html.Widget("home_page_top&qu ...
- 详解Webwork中Action 调用的方法
详解Webwork中Action 调用的方法 从三方面介绍webwork action调用相关知识: 1.Webwork 获取和包装 web 参数 2.这部分框架类关系 3.DefaultAction ...
- 2014 Super Training #9 C E - Cup 2 --记忆化搜索
原题:ZOJ 3681 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3681 题意:给一个m,n,m表示m个人,可以把m个 ...
- 2014 UESTC 暑前集训队内赛(2) 部分解题报告
B.Cuckoo for Hashing 模拟题. 代码: #include <iostream> #include <cstdio> #include <cstring ...
- FZU1894 志愿者选拔 --单调队列
做法:维护一个单调递减序列,只需输出序列中的第一个元素即可. 对于命令我们可以进行不同的处理: 如果是Q命令,则判断当前队列中是否仍有元素,如果没有则输出-1,如果有则直接输出队首. 如果是G命令,则 ...
- UESTC 1227 & POJ 3667 Hotel
非常细腻的线段树题目啊,后来还是有个细节写错了,查了一个晚上..就不分析了. 代码: #include <iostream> #include <cstdio> #includ ...
- Git版本控制工具(一)----git的安装及创建版本库
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...