项目配置

  • 在工程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. 省市区json数据

    window.LocalList = [ { region:{ name:'北京市', code:'11', state:[ { name:'北京', code:'01', city:[ {name: ...

  2. 5、Angular2 Injectable 服务

    1.Injectable 

  3. 在 Visual Studio 中调试 XAML 设计时异常

    在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...

  4. jsp的动作标签

    常用的标签: 1. forward   请求转发 [基本不使用] <==> request.getRequestDispatcher(url).forward(request,respon ...

  5. Java反射机制集中学习

    什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言 ...

  6. UDP client,UDP server, TCP server, TCP client

    UDP server import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocke ...

  7. iOS开发之GCD基础

    重新回顾.学习GCD.Block.先贴出一篇不错的讲解GCD基础使用的文章 原文地址:http://blog.csdn.net/aolan1108/article/details/17283415 做 ...

  8. OLEDB 枚举数据源

    在之前的程序中,可以看到有这样一个功能,弹出一个对话框让用户选择需要连接的数据源,并输入用户名和密码,最后连接:而且在一些数据库管理软件中也提供这种功能--能够自己枚举出系统中存在的数据源,同时还可以 ...

  9. Django的MTV模式详解

    参考博客:https://www.cnblogs.com/yuanchenqi/articles/7629939.html 一.MVC模型 Web服务器开发领域里著名的MVC模式. 所谓MVC就是把W ...

  10. MySQL 修改数据表中的字段的字符编码

    1.查询 MySQL 的版本: SELECT VERSION(); 2.查询 MySQL 当前使用的字符集: SHOW VARIABLES LIKE '%character%'; 3.查询指定数据库的 ...