1. 程式人生 > >融雲IM 基礎服務開發指南WebIMLib API 示例

融雲IM 基礎服務開發指南WebIMLib API 示例

Web SDK API 示例

簡介

融雲 Web SDK API 用法及常見異常總結,為了方便剛接觸融雲 Web SDK 開發者朋友們寫下此文件,希望可以幫到你們。

說明:

1、函式引數中使用 [] 為可選引數(陣列除外)。

2、**** => **** 在本文件中表示為示例程式碼和結果,例:1+2 => 3

初始化

初始化 SDK

執行初始化需要在開發者後臺新建應用得到 AppKey 和 token,初始化程式碼:

RongIMLib.RongIMClient.init(appkey,[dataAccessProvider],[options])

AppKey:應用的唯一標識。

Token :使用者的唯一標識。

RongIMLib.RongIMClient.init("appkey");

設定監聽

1、必須設定監聽器後,再連線融雲伺服器,示例程式碼如下:

// 設定連線監聽狀態 ( status 標識當前連線狀態 )
 // 連線狀態監聽器
 RongIMClient.setConnectionStatusListener({
    onChanged: function (status) {
        switch (status) {
            case RongIMLib.ConnectionStatus.CONNECTED:
                console.log('連結成功'
); break; case RongIMLib.ConnectionStatus.CONNECTING: console.log('正在連結'); break; case RongIMLib.ConnectionStatus.DISCONNECTED: console.log('斷開連線'); break; case RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT: console.log('其他裝置登入'
); break; case RongIMLib.ConnectionStatus.DOMAIN_INCORRECT: console.log('域名不正確'); break; case RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE: console.log('網路不可用'); break; } }}); // 訊息監聽器 RongIMClient.setOnReceiveMessageListener({ // 接收到的訊息 onReceived: function (message) { // 判斷訊息型別 switch(message.messageType){ case RongIMClient.MessageType.TextMessage: // message.content.content => 訊息內容 break; case RongIMClient.MessageType.VoiceMessage: // 對聲音進行預載入 // message.content.content 格式為 AMR 格式的 base64 碼 break; case RongIMClient.MessageType.ImageMessage: // message.content.content => 圖片縮圖 base64。 // message.content.imageUri => 原圖 URL。 break; case RongIMClient.MessageType.DiscussionNotificationMessage: // message.content.extension => 討論組中的人員。 break; case RongIMClient.MessageType.LocationMessage: // message.content.latiude => 緯度。 // message.content.longitude => 經度。 // message.content.content => 位置圖片 base64。 break; case RongIMClient.MessageType.RichContentMessage: // message.content.content => 文字訊息內容。 // message.content.imageUri => 圖片 base64。 // message.content.url => 原圖 URL。 break; case RongIMClient.MessageType.InformationNotificationMessage: // do something... break; case RongIMClient.MessageType.ContactNotificationMessage: // do something... break; case RongIMClient.MessageType.ProfileNotificationMessage: // do something... break; case RongIMClient.MessageType.CommandNotificationMessage: // do something... break; case RongIMClient.MessageType.CommandMessage: // do something... break; case RongIMClient.MessageType.UnknownMessage: // do something... break; default: // do something... } } });

連線伺服器

連線融雲必須在執行 RongIMLib.RongIMClient.init(appkey); 之後,並且所有除監聽以外的方法都必須在 connect成功之後 再呼叫。

  var token = "mKmyKqTSf7aNDinwAFMnz7NXKILeV3X0+CCRBOxmtOApmvQjMathViWrePIfq0GuTu9jELQqsckv4AhfjCAKgQ==";

  RongIMClient.connect(token, {
        onSuccess: function(userId) {
          console.log("Connect successfully." + userId);
        },
        onTokenIncorrect: function() {
          console.log('token無效');
        },
        onError:function(errorCode){
              var info = '';
              switch (errorCode) {
                case RongIMLib.ErrorCode.TIMEOUT:
                  info = '超時';
                  break;
                case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                  info = '未知錯誤';
                  break;
                case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION:
                  info = '不可接受的協議版本';
                  break;
                case RongIMLib.ErrorCode.IDENTIFIER_REJECTED:
                  info = 'appkey不正確';
                  break;
                case RongIMLib.ErrorCode.SERVER_UNAVAILABLE:
                  info = '伺服器不可用';
                  break;
              }
              console.log(errorCode);
            }
      });

重新連線

    var callback = {
        onSuccess: function(userId) {
            console.log("Reconnect successfully." + userId);
        },
        onTokenIncorrect: function() {
            console.log('token無效');
        },
        onError:function(errorCode){
            console.log(errorcode);
        }
    };
    var config = {
        // 預設 false, true 啟用自動重連,啟用則為必選引數
        auto: true,
        // 重試頻率 [100, 1000, 3000, 6000, 10000, 18000] 單位為毫秒,可選
        url: 'cdn.ronghub.com/RongIMLib-2.2.6.min.js',
        // 網路嗅探地址 [http(s)://]cdn.ronghub.com/RongIMLib-2.2.6.min.js 可選
        rate: [100, 1000, 3000, 6000, 10000]
    };
    RongIMClient.reconnect(callback, config);

訊息介面

傳送訊息

1、文字訊息

 var msg = new RongIMLib.TextMessage({content:"hello RongCloud!",extra:"附加資訊"});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 為傳送的訊息物件並且包含伺服器返回的訊息唯一Id和傳送訊息時間戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在討論組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('傳送失敗:' + info);
                }
            }
        );

傳送 pushData[通知] 給端 Android or iOS 方法如下:

 var msg = new RongIMLib.TextMessage({content:"hello RongCloud!",extra:"附加資訊"});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 var pushData = "your pushInfo";
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
        onSuccess: function (message) {
            .......
        },
        onError: function (errorCode,message) {
            ......
        }
    }, false, pushData
);

下述所有資訊型別有關 pushData 用法同此,不再複述。

2、圖片訊息

圖片上傳請參考:上傳

  /*
     圖片轉為可以使用 HTML5 的 FileReader 或者 canvas 也可以上傳到後臺進行轉換。

     注意事項:
         1、縮圖必須是 base64 碼的 jpg 圖。
         2、不帶字首。
         3、大小不得超過 100kb。
   */
 var base64Str = "base64 格式縮圖";
 var imageUri = "圖片 URL"; // 上傳到自己伺服器的 URL。
 var msg = new RongIMLib.ImageMessage({content:base64Str,imageUri:imageUri});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 為傳送的訊息物件並且包含伺服器返回的訊息唯一Id和傳送訊息時間戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在討論組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('傳送失敗:' + info);
                }
            }
        );

3、富文字訊息

圖片上傳請參考:上傳

 var base64Str = "base64 格式縮圖";// 圖片轉為可以使用 HTML5 的 FileReader 或者 canvas 也可以上傳到後臺進行轉換。
 var imageUri = "圖片 URL"; // 上傳到自己伺服器的 URL。
 var title = "富文字訊息標題";
 var msg = new RongIMLib.RichContentMessage({title:title,content:base64Str,imageUri:imageUri});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 為傳送的訊息物件並且包含伺服器返回的訊息唯一Id和傳送訊息時間戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在討論組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('傳送失敗:' + info);
                }
            }
        );

4、位置訊息

 var latitude = "緯度";
 var longitude = "經度";
 var poi = "位置描述";
 var content = "位置縮圖";
 var msg = new RongIMLib.LocationMessage({latitude: longitude, longitude: longitude, poi: poi, content: content});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 為傳送的訊息物件並且包含伺服器返回的訊息唯一Id和傳送訊息時間戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在討論組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('傳送失敗:' + info);
                }
            }
        );

5、命令訊息

 var data = "命令指令";//可以是一個物件,data = {cmd:update};
 var msg = new RongIMLib.CommandMessage({data:data});
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 為傳送的訊息物件並且包含伺服器返回的訊息唯一Id和傳送訊息時間戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在討論組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('傳送失敗:' + info);
                }
            }
        );

6、正在輸入狀態訊息

var conversationType = RongIMLib.ConversationType.PRIVATE;//只有單聊有正在輸入狀態。
var targetId = "xxx";
var msgName = "TextMessage";//使用者正在輸入的訊息型別 VoiceMessage等。
RongIMClient.getInstance().sendTypingStatusMessage(conversationType, targetId, msgName, {
                onSuccess: function (message) {
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        default :
                            info = x;
                            break;
                    }
                    console.log('傳送失敗:' + info);
                }
            });

7、已讀通知訊息

 var messageUId = "訊息唯一 Id";
 var lastMessageSendTime = "最後一條訊息的傳送時間";
 var type = "1";// 備用,預設賦值 1 即可。
 // 以上 3 個屬性在會話的最後一條訊息中可以獲得。
 var msg = new RongIMLib.ReadReceiptMessage({ messageUId: messageUId, lastMessageSendTime: lastMessageSendTime, type: type });
 var conversationtype = RongIMLib.ConversationType.PRIVATE; // 單聊,其他會話選擇相應的訊息型別即可。
 var targetId = "xxx"; // 目標 Id
 RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
                onSuccess: function (message) {
                    //message 為傳送的訊息物件並且包含伺服器返回的訊息唯一Id和傳送訊息時間戳
                    console.log("Send successfully");
                },
                onError: function (errorCode,message) {
                    var info = '';
                    switch (errorCode) {
                        case RongIMLib.ErrorCode.TIMEOUT:
                            info = '超時';
                            break;
                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                            info = '未知錯誤';
                            break;
                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:
                            info = '在黑名單中,無法向對方傳送訊息';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:
                            info = '不在討論組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_GROUP:
                            info = '不在群組中';
                            break;
                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:
                            info = '不在聊天室中';
                            break;
                        default :
                            info = x;
                            
            
           

相關推薦

IM 基礎服務開發指南WebIMLib API 示例

Web SDK API 示例 簡介 融雲 Web SDK API 用法及常見異常總結,為了方便剛接觸融雲 Web SDK 開發者朋友們寫下此文件,希望可以幫到你們。 說明: 1、函式引數中使用 [] 為可選引數(陣列除外)。 2、****

IM即時通訊服務端Server開發獲取token報錯簽名錯誤,請檢查

公司業務需要,開發即時通訊系統,在融雲基礎上進行開發,在server搭建的時候還是蠻逗比的,真的是各種不會,不過還好都會解決掉!今天遇到的問題就是獲取token的問題,不停的報錯:“getToken:

Android IM整合以及使用詳解(二)

Android 融雲IM整合以及使用詳解(二) 上篇講解了整合和好友列表和訊息記錄的使用,這篇將講解聊天介面和群聊介面的使用 先附上一張效果圖 先介紹佈局檔案 <LinearLayout xmlns:android="http://schema

Android IM整合以及使用詳解(一)

Android 融雲IM整合以及使用詳解(一) 整合 1.具體的整合步驟就不在詳細介紹,我們只說乾貨,附上融雲IM官方文件地址,裡面有更為詳細的整合介紹 https://www.rongcloud.cn/docs/#necessary 整合後效果 2.Android

im callkit 會話遇到的坑研究

1.應用收不到訊息 下面是來自融雲的官方解釋: 1.1首先,需要搞清楚兩個概念: push 訊息,後臺訊息。 收到這兩種訊息的時候,在終端上的表現形式是一樣的,都是在通知欄顯示一條通知。但實際上它們走的壓根就不是一條通道。它們的區別是: push 訊息是指呼叫

IM使用小結---Android

首先按照融雲官方文件,接入SDK,基於IMKit,具體接入就不多廢話啦啦… 此時AndroidManifest.xml在遇到第一個問題點: 1、android.support.v4.content.FileProvider衝突 <provider

IM-IOS版 會話列表刪除最後一條資訊時閃退

由於開發電商App需要客服的功能,臨時使用了融雲IM,基本上解決了有無問題。測試時發現會話列表(RCConversationListViewController)當側滑刪除最後一條會話時,程式崩潰閃退。異常資訊如下: 打客服電話,提交工單來回踢皮球,問題依然沒解決。升級

IM介紹

主要形式 好友單聊 討論組 群組 主要功能 文字 表情 圖片、拍照 語言 檔案 位置 實時音訊、視訊 介面 資費 免費: 收費: 計費規則: 增值服務: 訊息存放—本地 Token Toke

android專案中整合IM之實現訊息提供者來顯示群名

        融雲的訊息提供者可以用來設定群名,暱稱,頭像等等。由於套路都是一樣的,正好現在做到顯示群名這塊。所以就說說這個,其他訊息提供者跟這個是大同小異。 思路: 1.建立一個類,整合群組資訊

漫談LiteOS-端互通元件-MQTT開發指南(下)

1.介紹 SDK簡介 Agent Tiny是部署在具備廣域網能力、對功耗/儲存/計算資源有苛刻限制的終端裝置上的輕量級互聯互通中介軟體,您只需呼叫API介面,便可實現裝置快速接入到物聯網平臺以及資料上報和命令接收等功能。 Agent Tiny SDK是Huawei Agent Tiny軟體開發工具包(Soft

APICloud開發指南之$api

目錄 1 遍歷2 屬性操作3 文件操作4 CSS操作5 資料操作6 事件7 AJAX8 效果9 裝置適配 遍歷 .dom() 描述:選擇首個匹配的DOM元素用法一:.dom(el, selector) 從el元素開始查詢 用法二:.dom(selector) 從document元素

Ceph API服務開發--儲存叢集API呼叫

目標:開發Ceph儲存叢集API呼叫微服務環境:IntelliJ IDEA步驟:librados庫簡介->儲存叢集API呼叫程式編寫->API呼叫測試->Spring Boot微服務改造->執行測試參考:http://docs.ceph.org.cn/

福利來了【乾貨】音視訊開發 iOS CallKit 開發指南

iOS CallKit 開發指南 簡介 CallKit 是融雲音視訊通話功能的 UI 介面 SDK。包含了單人、多人音視訊通話的介面的各種場景和功能。您可以快速的整合 CallKit 來實現豐富的音視訊通話介面,並進行自己的 UI 定製開發。同時我們開源了 Call

開發指南專題十一:JEECG微高速開發平臺--基礎用戶權限

角色 系統用戶 .cn 選擇 func medium 表達 tro 不同 版權聲明:本文為博主原創文章。未經博主同意不得

開發指南專題五:JEECG微高速開發平臺代碼生成器

之前 gem target utf8 文件夾 var lan rop 代碼 開發指南專題五:JEECG微雲高速開發平臺代碼生成器 1.1. Maven開發環境搭建 在搭建jeecg的maven開發環境之前,須要先配置好本機的ma

Android開發遇到的坑-----2.8.+版本修改插件列表

rsa 圖片 項目需求 tex 顯示 根據 -- 移除 pre 簡介   融雲在2.8.+的時候,對輸入區域進行了重構,輸入區域整個為RongExtension,插件為RongExtension區域的Plugin模塊 List<IPluginModule&g

Qt與FFmpeg聯合開發指南(四)——編碼(2):完善功能和基礎封裝

v_op buffer 目前 front from 幀率 inter 博客 int 上一章我用一個demo函數演示了基於Qt的音視頻采集到編碼的完整流程,最後經過測試我們也發現了代碼中存在的問題。本章我們就先處理幾個遺留問題,再對代碼進行完善,最後把編碼功能做基礎封裝。 一

開發指南專題四 JEECG微快速開發平臺--JEECG開發環境搭建

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

開發指南專題五 JEECG微快速開發平臺程式碼生成器

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

開發指南專題十五 JEECG微快速開發平臺EXCEL匯入匯出

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!