关于融云在APIcloud中的集成

个人理解的简单的即时通讯的实现流程
1、A做出发送消息给B的动作
2、B收到A发来的消息
3、通过聊天的窗口显示出来
下面的步骤可以省略
4、B返回A一个已经查看的消息
5、A收到B已经查看的消息通过聊天的窗口显示出来

实现这个流程的基础要素
1、AB双方的融云模块都应经打开,并且网络连接没有问题。
2、AB双方都已经是融云的用户,取得融云的token。
3、连接融云的服务器
在程序中的操作如下:
服务端:配置获取融云token的程序
客户端:
1、配置融云的参数
在 config.xml 中设置内容如下:

<feature name="rongCloud2">
    <param name="appKey" value="此处填写 App Key 值" />
feature>

2、对融云进行初始化
init(callback(ret, err))

var rong = api.require('rongCloud2');

rong.init(function(ret, err){
     
    if (ret.status == 'error')
        api.toast({ msg: err.code });
});

返回值的代码如下

{
    status: 'success', // 状态码:success / error
}
//错误的返回码
{
    code: -10002    // 错误码
}

3、监听连接状态
setConnectionStatusListener(callback(ret, err))

var rong = api.require('rongCloud2');

// 之前调用 init 的代码省略

rong.setConnectionStatusListener(function(ret, err){
     
    api.toast({ msg: ret.result.connectionStatus });
});

// 之后调用 connect 的代码省略

返回值如下

{
    result:
    {
        connectionStatus: 'CONNECTED' // 连接状态
        //取值范围
        //CONNECTED // 连接成功
        //CONNECTING // 连接中
        //DISCONNECTED // 断开连接
        //KICKED // 用户账户在其他设备登录,本机会被踢掉线
        //NETWORK_UNAVAILABLE // 网络不可用
        //SERVER_INVALID // 服务器异常或无法连接
        //TOKEN_INCORRECT // Token 不正确
    }
}

4、监听所有消息(根据文档规定是在connect之前调用)
所有接收到的消息、通知、状态都经由此处设置的监听器处理。包括私聊消息、讨论组消息、群组消息、聊天室消息以及各种其他消息、通知、状态等
setOnReceiveMessageListener(callback(ret, err))

var rong = api.require('rongCloud2');

// 之前调用 init 的代码省略

rong.setOnReceiveMessageListener(function (ret, err) {
     
    api.toast({ msg: JSON.stringify(ret.result.message) });
    api.toast({ msg: ret.result.message.left });
})

// 之后调用 connect 的代码省略

返回值特别注意下

{
    result:
    {
        message:
        {
            content: {
                text: 'Hello world!',
                extra: ''
            }, // 消息内容
            conversationType: 'PRIVATE', // 参见 会话类型 枚举
            messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
            targetId: '55', // 这里对应消息发送者的 userId
            objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
            sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
            senderUserId: '55', // 发送者 userId
            messageId: 608, // 本地消息 Id
            sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
            receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
        },
        left: 0 // 剩余未拉取的消息数目
    }
}

5、连接融云 IM 服务器
connect({params}, callback(ret, err))

这里就需要传递参数了,参数只有一个token,用于服务器识别当前登录的账号,并返回账号的ID

var rong = api.require('rongCloud2');

rong.init(function(ret, err){
     
    if (ret.status == 'error')
        api.toast({ msg: err.code });
});

rong.connect({
    token: 'ThptTWyiPPPvZHvuSiuri82yq+hfEluLjZ78E1qo4hEVSFQNpqdoPu406urMWKN4Z3/olWR+v9JVLAwfOQoLrA=="},
    function(ret, err){
     
        if (ret.status == 'success')
            api.toast({ msg: ret.result.userId });
});

返回值

{
    status: 'success', // 状态码:success / error
    result:
    {
        userId: '9527' // 当前登录的用户 Id
    }
}

集成到这里,通过写死一个发送的函数。固定发送给用户B,这是登录用户B的手机就会收到发送的消息。可以通过打印出来观摩一下。至此融云的集成基本完成一半了。
接下来我会写一下怎么把接收到的数据展示到聊天界面。

你可能感兴趣的:(APIcloud开发,融云模块,即时聊天,即时通讯,聊天)