项目配置

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

IMSDK

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

初始化IM

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

  1. [IMService instance].deviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
  2.  
  3. [[IMService instance] startRechabilityNotifier];

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

  1. [IMHttpAPI instance].accessToken = accessToken;
  2. [IMService instance].accessToken = accessToken;
  3. [[IMService instance] start];

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

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

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

  1. [[IMService instance] enterBackground]; 

应用切到前台恢复IM

  1. [[IMService instance] enterForeground];

发送消息

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

    1. IMMessage *im = [[IMMessage alloc] init];
    2. //设置发送方id
    3. im.sender = sender;
    4. //设置接收方id
    5. im.receiver = receiver;
    6. //消息本地id
    7. im.msgLocalID = msgLocalID;
    8. im.content = "消息内容";
    9. [[IMService instance] sendPeerMessage:im]; 

类IMService

设置当前用户的access token

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

设置当前设备的id

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

设置观察者

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

开始接受消息

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

停止接受消息

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

应用进入到前台

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

应用进入到后台

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

发送消息

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

接口IMServiceObserver

连接状态

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

异地登陆

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

消息

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

消息ACK

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

消息接受者ACK

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

消息发送失败

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

类IMApi

设置当前用户的device token

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

清空当前用户关联的device token

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

IMKit

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

打开聊天界面

  1. MessageViewController* msgController = [[MessageViewController alloc] init];
  2. msgController.peerUID = peerUID;
  3. msgController.peerName = peerName;
  4. msgController.currentUID = currentUID;
  5. [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. 【Linux相识相知】bash的特性

    命令历史 shell进程会记录用户提交执行过的命令 可以是用history查看: [root@localhost dev]# history ss -tnl ifconfig vi /etc/sysc ...

  2. 浅谈C#中HttpWebRequest与HttpWebResponse的使用方法

    1.第一招,根据URL地址获取网页信息get方法 public static string GetUrltoHtml(string Url,string type) { try { System.Ne ...

  3. setInterval()的三种写法

    前言: setInterval("fun()",time)有两个参数:fun()为要执行的函数:time为多久执行一次函数,单位是毫秒: 我们做一个简单的例子,就是每隔5s弹出一个 ...

  4. SQL:exec sp_executesql 用法

    --這種是無效的過程 declare @sql nvarchar(500), @where nvarchar(500),@i nvarchar(64),@p nvarchar(50),@id int ...

  5. PHP基础--strtr和str_replace字符替换函数

    (一)strtr是字符替换函数 (1)单个字符替换: <?php echo strtr("abba", "ab", "10"),&qu ...

  6. Cass和ArcGIS交换

    南方cass图形为CAD,把CAD图形转换成arcgis没有任何问题,到属性有问题,cass存放数据是放在CAD扩展XDATA中,和 arcgis导入导出CAD标准扩展属性不一样,只能二次开发使用,c ...

  7. Steps of source code change to executable application

    程序运行的整个过程,学习一下 源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (o ...

  8. JSP初学者3

    reponse代表服务器对客户端的响应.大部分时候,程序无须使用response来响应客户端请求,因为有更简单的响应对象——out,它代表页面输出流. 但out无法响应生成非字符内容(out是JspW ...

  9. BIEE入门(四)展现层

    BIEE里最终面向最终用户(业务界面使用者的)叫做BIEE的Presentation Layer也即展现层,展现层的定义将是最终用户Web报表开发界面里能够看见的完全一样的样子,所以展现层一般将是以最 ...

  10. solidity语言11

    函数修饰符 pragma solidity ^0.4.11; contract owned { address owner; // 构造函数 function owned() public { own ...