项目配置

  • 在工程target的"Build Settings"中,找到"Linking"的"Other Linker Flags",添加参数-ObjC

IMSDK

  • imsdk只包含消息基础通讯功能

初始化IM

启动im服务只需要设置用户的access token,调用启动接口并添加消息的监听对象。

[IMService instance].deviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

[[IMService instance] startRechabilityNotifier];

用户登录成功后启动IM,设置用户的accesstoken并启动im

[IMHttpAPI instance].accessToken = accessToken;
[IMService instance].accessToken = accessToken;
[[IMService instance] start];

用户注销后清空用户的devicetoken并停止IM

[IMHttpAPI unbindDeviceToken];
[IMService instance].accessToken = @""
[[IMService instance] stop];

应用切到后台暂停IM,此后所有的消息将通过推送通道下发

[[IMService instance] enterBackground]; 

应用切到前台恢复IM

[[IMService instance] enterForeground];

发送消息

  • 启动IM服务设置好用户id之后便可以开始发送消息,消息发送的代码需要在UI线程中调用(消息内容大小限制为4k) :

      IMMessage *im = [[IMMessage alloc] init];
    //设置发送方id
    im.sender = sender;
    //设置接收方id
    im.receiver = receiver;
    //消息本地id
    im.msgLocalID = msgLocalID;
    im.content = "消息内容";
    [[IMService instance] sendPeerMessage:im]; 

类IMService

设置当前用户的access token

属性名:String accessToken
功能:在调用start之前必须要设置用户的accessToken,token是由第三方应用服务器调用IM服务器RestAPI所得。

设置当前设备的id

属性名:String deviceID
功能:设备id可以用户多点登陆的唯一性判断,可选调用

设置观察者

方法名: -(void) addMessageObserver:(id<IMServiceObserver>)observer
功能:设置observer,在observer中处理接受到的消息。
参数说明:
* observer 观察者
返回值:无返回值

开始接受消息

方法名:-(void) start
功能:用户登陆成功后,连接im服务器来接受在线消息。

停止接受消息

方法名:-(void) stop
功能:用户注销后,断开和im服务器的连接,从而终止接受在线消息。

应用进入到前台

方法名:-(void) enterForeground
功能:应用进入前台,im服务器将停止将消息推送到通知栏

应用进入到后台

方法名:-(void) enterBackground
功能:应用进入后台,im服务器会将将消息推送到通知栏

发送消息

方法名: -(BOOL) sendPeerMessage:(IMMessage*)msg
功能:发送im消息,如果当前连接处于断开状态,消息会发送失败, 函数返回YES,也不能表明服务器已经接收到消息。
参数说明:
*msg 消息对象
返回值:BOOL

接口IMServiceObserver

连接状态

方法名:-(void) onConnectState:(int)state
功能:连接状态变更通知
参数说明:
*state 连接的状态 STATE_UNCONNECTED, STATE_CONNECTING, STATE_CONNECTED, STATE_CONNECTFAIL
返回值:无返回值

异地登陆

方法名: -(void) onLoginPoint:(LoginPoint*)lp
功能:当前登陆用户在异地登陆
参数说明:
*lp 登录点信息
返回值:无返回值

消息

方法名:-(void) onPeerMessage:(IMMessage*)msg
功能:接受到一条im消息
参数说明:
*msg 消息对象
返回值:无返回值

消息ACK

方法名:-(void) onPeerMessageACK:(int)msgLocalID uid:(int64_t)uid
功能:服务器对收到消息的ack,此时这条消息才能标志为发送成功
参数说明:
*msgLocalID 消息的本地ID
*uid 消息接受者
返回值:无返回值

消息接受者ACK

方法名:-(void)onPeerMessageRemoteACK:(int)msgLocalID uid:(int64_t) uid
功能:消息已经被对端接收到。
参数说明:
*msgLocalID 消息的本地ID
*uid 消息接受者
返回值:无返回值

消息发送失败

方法名:-(void) onPeerMessageFailure:(int)msgLocalID uid:(int64_t)uid
功能:消息发出后,未收到服务器的ack,在和服务器的连接断开后,会通知消息发送失败。
参数说明:
*msgLocalID 消息的本地ID
*uid 消息接受者
返回值:无返回值

类IMApi

设置当前用户的device token

方法名:-(BOOL) bindDeviceToken:(NSString*)deviceToken success:(void (^)())success fail:(void (^)())fail
功能:设置device token后,im服务器会对用户推送离线消息
参数说明:
*deviceToken APNS的deviceToken
返回值:boolean 是否设置成功。

清空当前用户关联的device token

方法名:-(BOOL) unbindDeviceToken:(NSString*)deviceToken success:(void (^)())success fail:(void (^)())fail
功能:im服务器不会再对这台设备推送离线消息
参数说明:
*deviceToken APNS的deviceToken
*accessToken 用户当前的accessToken
返回值:boolean 是否清空成功。

IMKit

  • 除了imsdk必要的初始化动作外,使用imkit需要初始化存储类
    //setDBPath必须要在引用PeerMessageHandler,GroupMessageHandler之前调用
//可以将当前登录的uid加入到路径中,这样不同用户登录的时候,可以保留前一个用户的聊天历史
[MessageDB setDBPath:path];
[IMService instance].peerMessageHandler = [PeerMessageHandler instance];
[IMService instance].groupMessageHandler = [GroupMessageHandler instance];

打开聊天界面

MessageViewController* msgController = [[MessageViewController alloc] init];
msgController.peerUID = peerUID;
msgController.peerName = peerName;
msgController.currentUID = currentUID;
[self.navigationController pushViewController:msgController animated: YES];

GoBelieve IOS SDK接入备忘的更多相关文章

  1. GoBelieve Android SDK接入备忘

    Android SDK版本 目前SDK只支持Android 2.2或以上版本的手机系统. AndroidManifest.xml配置 以下配置可以在IMDemo/AndroidManifest.xml ...

  2. GoBelieve JS IM SDK接入备忘

    类IMService 构造函数 参数说明: * `observer` 回调对象(可选) 设置当前用户的access token 属性名:String accessToken 功能:在调用start之前 ...

  3. UE4 ios环境搭建备忘

    1.windows.mac安装证书 2.安装xcode .app -- 路径可以拖入 sudo gem install xcodeproj 3.错误处理 Setting up Mono Running ...

  4. iOS 7设计备忘单

    With the release of iOS 7, app designers and developers will need to adjust their visual language to ...

  5. SDK接入(3)之iOS内支付(In-App Purchase)接入

    SDK接入(3)之iOS内支付(In-App Purchase)接入 继整理了Android平台的SDK接入过程.再来分享下iOS平台的内支付(In-App Purchase)接入,作为笔者在游戏开发 ...

  6. iOS第三方开源库的吐槽和备忘(转)

    原文:http://www.cocoachina.com/industry/20140123/7746.html 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽.   目前比较活跃的社区 ...

  7. iOS第三方开源库的吐槽和备忘

    转自:http://blog.ibireme.com/2013/09/23/ios-third-party-libs/#more-41361 由 ibireme 发表于 2013/09/23 做iOS ...

  8. 手机游戏渠道SDK接入工具项目分享(二)万事开头难

    一般接到任务后程序员们通常都开始着手进行技术调研了,但我这活是项目负责人.还有一大堆事情要先期准备,没人能帮忙. 一.人力配置 考虑的之前已经有一波人搞了大半年,但没有起色,先期也没有太大人力需求,所 ...

  9. ios--集成支付宝钱包支付iOS SDK的方法与经验

    文/胖花花(简书作者)原文链接:http://www.jianshu.com/p/fe56e122663e著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 没想到,支付宝的SDK是我目前 ...

随机推荐

  1. pL/SQL 创建DBLIKN

    某些时候,需要关联不同的数据库进行数据查询.操作等. 在Oracle中,关联不同的数据库进行表关联,就要用到了数据库连接(DB link). 创建DB link有两种方法:通过SQL语句创建,通过可视 ...

  2. VS 正则表达式替换内容

    很少使用VS的正则替换功能,最近因为需要添加大量的默认值,但是又不想重新类,就想到了这个. 1.替换带有///描述的属性 查找的正则表达式: /// <summary>((.)*((.|\ ...

  3. JavaScript对象 继承

    JavaScript继承主要依靠原型链实现. 原型链 利用原型让一个引用类型继承另一个引用类型水位属性和方法. 每一个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指 ...

  4. Spring @Resource, @Autowired and @Inject 注入

    Overview I’ve been asked several times to explain the difference between injecting Spring beans with ...

  5. mac的svn

    http://xclient.info/s/cornerstone.html?t=c5242a66e53f1d866afe8c42aace2738c04ce9ee#versions 破解版的地址 打开 ...

  6. 基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击

    攻击原理:     CFS攻击(Cross Frame Script(跨框架脚本)攻击)是利用浏览器允许框架(frame)跨站包含其它页面的漏洞,在主框架的代码 中加入scirpt,监视.盗取用户输入 ...

  7. css Media Query详解

    Media Queries详解 Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: 1 <link href="css/re ...

  8. FUNCTION_POWER

    1.power function Definition:The Oracle PL/SQL, the POWER function is a built in function which takes ...

  9. Win10下使用VSCode配置python运行环境

    VSCode配置python运行环境 安装python 到官网下载python,直接安装即可,在安装过程中可以选择将python加入环境变量 安装VSCode 官网下载,直接安装 配置 安装pytho ...

  10. Windows 2012R2远程桌面服务简介

    一.远程桌面服务概述 远程桌面服务加快并扩展了到任何设备的桌面和应用程序部署,在帮助保护关键知识产权的安全的同时提高了工作人员的工作效率,简化了法规遵从性. 远程桌面服务启用虚拟机基础结构 (VDI) ...