融雲消息接口apicloud


融雲提供消息發送服務,支持個人消息,群消息,討論組,聊天室消息, 以下是它涉及到的接口。
初始化,連接之后,可以使用。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
    <title>rongCloud</title>
    <link rel="stylesheet" type="text/css" href="api.css"/>
    <style>
    </style>
</head>
<body>
	<div style="height: 200px;width: 200px;">rongCloud</div>
</body>
<script type="text/javascript" src="../../script/api.js"></script>
<script type="text/javascript" src="../../script/common.js"></script>
<script type="text/javascript">
    var rong;
    var user;
    apiready = function(){
        user = $api.getStorage('user');
        rong = api.require('rongCloud2');
        rong.init(function(ret, err) {
        });

        setConnectionStatusListener();
        rong.connect({
            token: user.rong_token
        },function(ret, err) {
            setOnReceiveMessageListener();
            getCurrentUserId();
        });

    };

    // 獲取當前用戶id
    function getCurrentUserId() {
        rong.getCurrentUserId(function(ret, err) {
            api.toast({ msg: ret.result });
        })
    }

    // 獲取消息通知免打擾時間
    function getNotificationQuietHours() {
        rong.getNotificationQuietHours(function(ret, err) {
            api.toast({ msg: JSON.stringify(ret.result) });
        })
    }
    
    // 移除消息免打擾時間
    function removeNotificationQuietHours() {
        rong.removeNotificationQuietHours(function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }
    
    // 設置消息免打擾時間
    function setNotificationQuietHours() {
        rong.setNotificationQuietHours({
            startTime: '22:00:00',
            spanMinutes: 6
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }
    
    // 獲取黑名單
    function getBlacklist() {
        rong.getBlacklist(function(ret, err) {
            api.toast({ msg: JSON.stringify(ret.result) });
        })
    }
    
    // 查看某用戶是否在黑名單中
    function getBlacklistStatus() {
        rong.getBlacklistStatus({
            userId: '171'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }
    
    // 移除黑名單
    function removeFromBlacklist() {
        rong.removeFromBlacklist({
            userId: '171'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }
    
    // 加入黑名單
    function addToBlacklist() {
        rong.addToBlacklist({
            userId: '171'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }

    // 注銷登錄(不再接收 Push 消息)
    function logout() {
        rong.logout(function(ret, err) {
            if (ret.status == 'error')
                api.toast({ msg: err.code });
        }); // 斷開,且不再接收 Push
    }

    // 獲取連接狀態
    function getConnectionStatus() {
        rong.getConnectionStatus(function(ret, err) {
            api.toast({ msg: ret.result.connectionStatus });
        })
    }

    // 退出聊天室
    function quitChatRoom() {
        rong.quitChatRoom({
            chatRoomId: '123'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }

    // 加入聊天室
    function joinChatRoom() {
        rong.joinChatRoom({
            chatRoomId: '123',
            defMessageCount: 20
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }


    // 退出群組
    function quitGroup() {
        rong.quitGroup({
            groupId: '123'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }
    
    // 加入群組
    function joinGroup() {
        rong.joinGroup({
            groupId: '123',
            groupName: 'Ski Club'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }

    // 同步當前用戶所屬群組到融雲
    function syncGroup() {
        rong.syncGroup({
            groups: [{
                groupId: '123',
                groupName: 'Ski Club',
                portraitUrl: 'http://club.com/ski.jpg'
            }, {
                groupId: '456',
                groupName: 'Diving Club',
                portraitUrl: 'http://club.com/diving.jpg'
            }]
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }

    // 設置討論組成員邀請權限,討論組沒有圖像
    function setDiscussionInviteStatus() {
        rong.setDiscussionInviteStatus({
            discussionId: 'e9f19096-5b44-4559-8eb0-0f139bde74e0',
            inviteStatus: 'OPENED'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }

    // 退出討論組,會使討論組失效
    function quitDiscussion() {
        rong.quitDiscussion({
            discussionId: 'e9f19096-5b44-4559-8eb0-0f139bde74e0'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }

    // 移除成員從討論組
    function removeMemberFromDiscussion() {
        rong.removeMemberFromDiscussion({
            discussionId: 'e9f19096-5b44-4559-8eb0-0f139bde74e0',
            userId: '171'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }

    // 向討論組添加成員
    function addMemberToDiscussion() {
        rong.addMemberToDiscussion({
            discussionId: 'e9f19096-5b44-4559-8eb0-0f139bde74e0',
            userIdList: ['16']
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }


    // 獲取討論組
    function getDiscussion(discussionId) {
        rong.getDiscussion({
            discussionId: discussionId
        }, function(ret, err) {
            if (ret.status == 'success')
                alert(JSON.stringify(ret));
            else
                api.toast({ msg: err.code });
        })
    }

    // 設置討論組名稱
    function setDiscussionName() {
        rong.setDiscussionName({
            discussionId: 'e9f19096-5b44-4559-8eb0-0f139bde74e0',
            name: '新討論組名稱'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: JSON.stringify(ret.status) });
            else
                api.toast({ msg: err.code });
        })
    }


    // 創建討論組
    function createDiscussion() {
        rong.createDiscussion({
            name: 'Ironman, Batman',
            userIdList: ['172', '16']
        }, function(ret, err) {
            if (ret.status == 'success')
            {
                getDiscussion(ret.result.discussionId);
            }
            else
            {
                api.toast({ msg: err.code });
            }
        })
    }

    
    // 清除草稿會話,草稿估計只有一個
    function clearTextMessageDraft() {
        rong.clearTextMessageDraft({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }
    
    // 保存消息草稿
    function saveTextMessageDraft() {
        rong.saveTextMessageDraft({
            conversationType: 'PRIVATE',
            targetId: '172',
            content: 'Hello w'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }

    // 獲取消息草稿
    function getTextMessageDraft() {
        rong.getTextMessageDraft({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast({ msg: ret});
        })
    }


    // 設置某一消息的附加信息
    function setMessageExtra() {
        rong.setMessageExtra({
            messageId: '1',
            value: '額外的信息'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }

    // 清除某一會話的消息未讀狀態
    function clearMessagesUnreadStatus() {
        rong.clearMessagesUnreadStatus({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }


    // 設置接收的消息狀態
    function setMessageReceivedStatus() {
        rong.setMessageReceivedStatus({
            messageId: '1',
            receivedStatus: 'READ'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }

    // 獲取某些類型的未讀消息數
    function getUnreadCountByConversationTypes() {
        rong.getUnreadCountByConversationTypes({
            conversationTypes: ['PRIVATE', 'GROUP']
        }, function(ret, err) {
            api.toast({ msg: ret.result });
        })
    }

    // 獲取某一會話的未讀消息數
    function getUnreadCount() {
        rong.getUnreadCount({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast({ msg: ret.result });
        })
    }

    // 獲取所有未讀消息數
    function getTotalUnreadCount() {
        rong.getTotalUnreadCount(function(ret, err) {
            api.toast({ msg: ret.result });
        })
    }


    // 清空某一會話的所有聊天消息記錄,清除的是融雲系統的聊天數據
    function clearMessages() {
        rong.clearMessages({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }


    // 刪除指定的一條或者一組消息
    function deleteMessages() {
        rong.deleteMessages({
            messageIds: [50, 51] // 刪除指定的id消息
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }



    // 獲取歷史消息通過對象名稱
    function getHistoryMessagesByObjectName() {
        rong.getHistoryMessagesByObjectName({
            conversationType: 'PRIVATE',
            targetId: '172',
            objectName: 'RC:TxtMsg',
            oldestMessageId: 0,
            count: 20
        }, function(ret, err) {
            api.toast({ msg: JSON.stringify(ret) });
        })
    }


    // 獲取消息記錄
    function getHistoryMessages() {
        // 之前調用 init 和 connect 的代碼省略
        rong.getHistoryMessages({
            conversationType: 'PRIVATE',
            targetId: '172',
            oldestMessageId: 0, // 獲取此id之后的最新消息
            count: 20
        }, function(ret, err) {
            api.toast({ msg: JSON.stringify(ret) });
        })
    }

    // 獲取某一會話的最新消息
    function getLatestMessages() {
        rong.getLatestMessages({
            conversationType: 'PRIVATE',
            targetId: '172',
            count: 20
        }, function(ret, err) {
            api.toast({ msg: JSON.stringify(ret) });
        })
    }


    // 獲取某一會話的通知狀態
    function getConversationNotificationStatus() {
        rong.getConversationNotificationStatus({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            if (ret.status == 'success')
                api.toast({ msg: ret.result.code });
            else
                api.toast({ msg: err.code });
        })
    }

    // 設置會話置頂
    function setConversationToTop() {
        rong.setConversationToTop({
            conversationType: 'PRIVATE',
            targetId: '172',
            isTop: true
        }, function(ret, err) {
            api.toast({ msg: ret.status });
        })
    }

    // 清除所有會話
    function clearConversations() {
        rong.clearConversations({
            conversationTypes: ['PRIVATE', 'GROUP']
        }, function(ret, err) {
            api.toast(JSON.stringify(ret));
        })
    }

    // 移除會話
    function removeConversation() {
        rong.removeConversation({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast(JSON.stringify(ret));
        });
    }
    
    
    // 獲取會話,會話最后一條消息
    function getConversation() {
        rong.getConversation({
            conversationType: 'PRIVATE',
            targetId: '172'
        }, function(ret, err) {
            api.toast({ msg: JSON.stringify(ret.result) });
        })
    }


    // 監聽消息接收
    function setOnReceiveMessageListener() {
        rong.setOnReceiveMessageListener(function(ret, err) {
            api.toast({ msg: JSON.stringify(ret.result.message) });
        })
    }

    // 發送命令消息
    function sendCommandMessage() {
        rong.sendCommandMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            name: 'AddFriend',
            data: '{\"inviteUserId\":16}'
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }

    // 發送命令消息
    function sendCommandNotificationMessage() {
        rong.sendCommandNotificationMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            name: 'AddFriend',
            data: '{\"inviteUserId\":16}'
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }

    // 發送位置消息 雲路通APP暫不支持
    function sendLocationMessage() {
        rong.sendLocationMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            latitude: 39.9139,
            longitude: 116.3917,
            poi: '北京市朝陽區北苑路北辰泰岳大廈',
            imagePath: 'fs://res/test.jpg',
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'progress')
                api.toast({ msg: ret.result.progress });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }


    // 發送富文本文件 雲路通APP暫不支持
    function sendRichContentMessage(title,des,imageUrl) {
        rong.sendRichContentMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            title: title,
            description: des,
            imageUrl: imageUrl,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }

    // 語音消息
    function sendVoiceMessage(voicePath) {
        rong.sendVoiceMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            voicePath: voicePath,
            duration: 5,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }

    // 監聽鏈接狀態
    function setConnectionStatusListener() {
        rong.setConnectionStatusListener(function(ret, err) {
            api.toast({ msg: ret.result.connectionStatus });
        });
    }

    // 斷開鏈接
    function disconnect() {
        // 之前調用 init 和 connect 的代碼省略
        rong.disconnect({
            isReceivePush: true
        }, function(ret, err) {
            if ('success' == ret.status) {
                api.toast({ msg: '斷開連接成功!' });
            }
        });
    }

    // 發送文字消息
    function sendTextMessage(msg) {
        rong.sendTextMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            text: msg,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }

    // 發送圖片消息
    function sendImageMessage(imagePath) {
        rong.sendImageMessage({
            conversationType: 'PRIVATE',
            targetId: '172',
            imagePath: imagePath,
            extra: ''
        }, function(ret, err) {
            if (ret.status == 'prepare')
                api.toast({ msg: JSON.stringify(ret.result.message) });
            else if (ret.status == 'progress')
                api.toast({ msg: ret.result.progress });
            else if (ret.status == 'success')
                api.toast({ msg: ret.result.message.messageId });
            else if (ret.status == 'error')
                api.toast({ msg: err.code });
        });
    }
</script>
</html>

ps:可以學學人家的接口命名,非常的規划,功能很齊全。設置set,獲取get,增加add,移除remove,同步sync,發送send等采用駝峰命名。基本滿足了APP的需要。

融雲消息的理解

融雲提供雲數據,存儲你的app中的聊天數據,
如果唯一呢?它提供一個appkey,appSecret來確定你的app。
它提供用戶存儲,有user_id,有token。
通過token,獲取user_id信息。
通過目標user_id進行通訊聊天。
它還保存一些群id,討論組id,聊天室id等信息。
你可以自己把這些信息,同步到你自己的數據庫中,或者用sqlite,或者用sqlserver。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM