关于融云在APIcloud中的集成

来源:互联网 发布:淘宝模特招聘是真的吗 编辑:程序博客网 时间:2024/06/05 13:25

个人理解的简单的即时通讯的实现流程
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的手机就会收到发送的消息。可以通过打印出来观摩一下。至此融云的集成基本完成一半了。
接下来我会写一下怎么把接收到的数据展示到聊天界面。

1 0