融云消息接口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,如需转载请自行联系原作者

相关文章
|
Java Maven
【IDEA异常】idea创建项目target bytecode version默认为1.5,target bytecode version手动修改后经常自动变为默认值1.5
【IDEA异常】idea创建项目target bytecode version默认为1.5,target bytecode version手动修改后经常自动变为默认值1.5
988 0
获取apk的签名信息
在接入第三方功能时,经常要注册提交apk的签名信息 (sha1签名)?,下面列出相关步骤。 获取apk签名信息的步骤: 1)修改apk后缀名为zip,解压得到其中的META-INF文件夹; 2)把META-INF文件夹放到C盘根目录下; 3)在dos面板中,  敲入命令:  keytool -printcert -file C:\META-INF\CERT.
5828 0
|
3月前
|
JSON API 数据安全/隐私保护
农业银行模拟器,工商建设邮政中国银行,虚拟余额生成模拟器
这个银行模拟系统包含三个主要模块:核心银行账户逻辑、图形用户界面和REST API接口
|
9月前
|
敏捷开发 开发框架 小程序
微信纯血鸿蒙版正式发布,295天走完微信14年技术之路!
不管外界如何评价和鞭策,这款产品本身,依然需要研发团队一个键一个键敲出来,从内核,到架构,到内测,到公测,再到一轮一轮的 debug,他们要在不到一年的时间里,走完微信14 年的路。 回顾鹅厂所做过的产品里,也许从未有过一款,被如此放在放大镜下凝视。每一次上架,每一个 bug,乃至于每一个里程碑,几乎都预定当天热搜。
386 6
微信纯血鸿蒙版正式发布,295天走完微信14年技术之路!
|
7月前
|
存储 人工智能 搜索推荐
Shandu:开源AI研究黑科技!自动挖掘多层级信息,智能生成结构化报告
Shandu 是一款开源的 AI 研究自动化工具,结合 LangChain 和 LangGraph 技术,能够自动化地进行多层次信息挖掘和分析,生成结构化的研究报告,适用于学术研究、市场分析和技术探索等多种场景。
565 8
Shandu:开源AI研究黑科技!自动挖掘多层级信息,智能生成结构化报告
|
前端开发 JavaScript 算法
ACEeditor使用手册(三)
ACEeditor使用手册(三)
388 0
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
599 3
|
监控 网络协议 JavaScript
【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级
淘宝NPM 镜像站喊你切换新域名啦。新的Web 站点:https://npmmirror.com,Registry Endpoint:https://registry.npmmirror.com。 http://npm.taobao.org 和 http://registry.npm.taobao.org 将在 2022.06.30 号正式下线和停止 DNS 解析。
3172 0
|
架构师 Oracle 网络协议
我对技术架构的理解与架构师角色的思考
架构师一定要有技术的广度。大家一定要学会积累,积累到一定的程度以后,你会做到无师自通。
4346 74
我对技术架构的理解与架构师角色的思考
|
前端开发
前端必学——实现电商图片放大镜效果(附代码)
放大镜可以说是前端人必须学会的程序之一,今天的案例为大家展示一下怎么实现放大镜的效果! 效果图展示   整个效果就是当鼠标放到展示图上的时候,会出现一个遮罩层以及弹出来一个框展示一个详情图,并且鼠标移动的时候详情图跟着移动,鼠标离开详情图消失。