zoukankan      html  css  js  c++  java
  • GoBelieve IOS SDK接入备忘

     

    项目配置

    • 在工程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之前必须要设置用户的accessTokentoken是由第三方应用服务器调用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 APNSdeviceToken
    返回值:boolean 是否设置成功。

    清空当前用户关联的device token

    方法名:-(BOOL) unbindDeviceToken:(NSString*)deviceToken success:(void (^)())success fail:(void (^)())fail
    功能:im服务器不会再对这台设备推送离线消息
    参数说明:
        *deviceToken APNSdeviceToken
        *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];
  • 相关阅读:
    Java web ch02_5
    Java web ch02_4
    Java web ch02_3
    Java web ch02_9
    myeclipse和eclipse的区别以及优越性
    新的学年,迎来新的活力!
    Javaweb中的Tomcat服务器(简单了解)
    一切都是对象
    java中被隐藏的具体实现
    SSL与TLS的区别以及介绍
  • 原文地址:https://www.cnblogs.com/nuanshou/p/4401093.html
Copyright © 2011-2022 走看看