關於融雲在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的手機就會收到發送的消息。可以通過打印出來觀摩一下。至此融雲的集成基本完成一半了。
接下來我會寫一下怎麼把接收到的數據展示到聊天界面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章