融云消息接口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。


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6593639.html,如需转载请自行联系原作者

相关文章
|
3月前
|
开发工具 开发者
【使用必读】服务端集成网易云信IM 即时通讯-回调说明篇(二)
【使用必读】服务端集成网易云信IM 即时通讯-回调说明篇(二)
48 0
|
3月前
|
JSON 安全 应用服务中间件
【使用必读】服务端集成网易云信IM 即时通讯-回调说明篇(一)
【使用必读】服务端集成网易云信IM 即时通讯-回调说明篇(一)
61 0
|
3月前
|
安全 Java API
【新手必看】服务端集成网易云信IM 即时通讯
【新手必看】服务端集成网易云信IM 即时通讯
88 0
|
4月前
|
API
企业微信api接口调用-企业微信好友收发消息
企业微信api接口调用-企业微信好友收发消息
|
5月前
|
存储 算法 安全
微信团队分享:来看看微信十年前的IM消息收发架构,你做到了吗
好的架构是迭代出来的,却也少不了良好的设计,本文将带大家回顾微信背后最初的也是最核心的IM消息收发技术架构,愿各位读者能从中获得启发。
211 1
|
5月前
|
XML Go 数据格式
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
【微信公众号开发】基于golang的公众号开发——接入消息自动回复接口
379 0
|
存储 JSON 网络协议
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
本文针对秀场直播,结合我们一年以来通过处理不同的业务线上问题,进行了技术演进式的IM消息模块架构的升级与调整,并据此进行了技术总结、整理成文,希望借此机会分享给大家。
421 0
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
|
开发框架 开发工具
使用融云SDK在APICloud 平台实现单人多人音频通话
使用融云SDK在APICloud 平台实现单人多人音频通话,使用之前必须先获取 token、init、connect,同时需要到融云后台开通音视频通话功能(开通或者关闭 30 分钟后生效)。单人通话逻辑比较简单,主要会用到 didReceiveCall、didConnect、didDisconnect 等三个事件。
225 0
|
开发工具
使用融云SDK在APICloud平台实现单人多人音频通话
使用之前必须先获取token、init、connect,同时需要到融云后台开通音视频通话功能(开通或者关闭30分钟后生效)。单人通话逻辑比较简单,主要会用到didReceiveCall、didConnect、didDisconnect等三个事件。多人通话逻辑复杂一点,并且只能应用在群组或者讨论组,会用到didReceiveCall、didConnect、remoteUserDidJoin、remoteUserDidLeft、remoteUserDidInvite、didDisconnect等六个事件。
173 0
使用融云SDK在APICloud平台实现单人多人音频通话
|
Android开发 iOS开发
集成极光推送-服务端
集成极光推送-服务端
集成极光推送-服务端