开发者社区> 桃子红了呐> 正文

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微信公众平台消息接口开发(50)在线点歌/在线音乐
微信 在线听歌 在线点歌 在线点播 音乐API 公众平台 微信公众平台消息接口 微信开发模式  作者:http://www.cnblogs.com/txw1958/ 原文:http://www.cnblogs.com/txw1958/archive/2013/02/25/weixin-if50-music.html 微信公众平台在年前开放了新的消息接口-音乐消息,这是广大微信公众平台开发者的福音。
1118 0
微信服务号通过客服接口主动给普通微信号推送消息
当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。
253 0
微信小程序模板消息接口下线了,不用慌,调用统一服务消息接口来实现相同功能
做过微信开发的应该都有一点感触,就是他的开发文档不是一成不变的,接口有时候会被下线,但也不是一下子就不能用了,一般会兼容旧接口,然后提醒你使用新接口有更多好处。如果接口真的直接下线了,也会提供另一种能够实现相同功能的接口给你替换。所以有天你以为代码都写好了,没有bug了,悠哉悠哉的时候,忽然产品经理说微信的哪个接口不能用了,快去改一下,不要惊讶,老老实实去改就对了哈。
321 0
Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各...
1302 0
用SignalR 2.0开发客服系统[系列1:实现群发通讯]
原文:用SignalR 2.0开发客服系统[系列1:实现群发通讯] 前言   先说一下我为什么会写这个博客吧,(首先说一下,我是一个小菜鸟,讲的不好请指导 - -,)    前段时间公司的项目涉及到在B/S上使用即时通讯,(其实就是做一个B/S的客服系统),当时公司很多大牛都说比较难搞,涉及到很多东西.
1159 0
手把手学IOT服务端API编程[15、发布广播消息]|MVP讲堂
本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。阿里云MVP手把手教你!有演示视频,千万别错过!
1304 0
集成极光推送-服务端
集成极光推送-服务端
124 0
手把手学IOT服务端API编程[14、发消息给设备并同步返回响应]|MVP讲堂
本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。阿里云MVP手把手教你!有演示视频,千万别错过!
1819 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ReactNative框架在京东无线端的实践
立即下载
网易 NEI 接口管理解决 方案
立即下载
ReactNative在京东无线端的实践
立即下载