融云消息接口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。
融云消息接口apicloud的更多相关文章
- 融云技术分享:解密融云IM产品的聊天消息ID生成策略
本文来自融云技术团队原创分享,原文发布于“融云全球互联网通信云”公众号,原题<如何实现分布式场景下唯一 ID 生成?>,即时通讯网收录时有部分改动. 1.引言 对于IM应用来说,消息ID( ...
- 【融云分析】如何实现分布式场景下唯一 ID 生成?
◀背景▶ 对于一套分布式部署的 IM 系统,要求每条消息的 ID 要保证在集群中全局唯一且按生成时间有序排列.如何快速高效的生成消息数据的唯一 ID ,是影响系统吞吐量的关键因素.那么,融云是如何做到 ...
- apicloud+融云实现即时通讯
请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用ap ...
- iOS消息体系架构详解-融云即时通讯云
iOS SDK 体系架构 本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品. 融云 SDK 系统架构 IMKit IMKit 的功能主要是封装各种界 ...
- APICloud平台的融云2.0集成
融云2.0的官方文档地址:http://docs.apicloud.com/端API/开放SDK/rongCloud2 项目须要IM模块,最后还是选择了融云.在iOS原生开发中,融云sdk集成了聊天界 ...
- APICloud框架——融云+UIChatTools实现即时通讯聊天
今天完成了公司app的聊天界面的收发消息功能,结合融云2和UIChatTools模块实现,只是实现了基本功能,好多细节还没有实现,废话不多说,上代码 输入框页面(win) 先引入所需模块 // 融云模 ...
- 融云通信云发力教育行业 助在线教育"风口"继续腾云
4 月 16 日,2019 年AI 在线教育大会在北京站圆满落幕,会上云集超过500位资深教育从业者.200 家机构,共同就 AI 教育落地.在线教育应用经验等主题开展深入探讨.云通信领域的领导企业融 ...
- 融云rongCloud聊天室的使用
融云提供了两种途径的接口, 一个是app端,一个是服务器端的. app端 1.连接融云,监听消息 rong = api.require('rongCloud2'); rong.init(functio ...
- 融云技术分享:融云安卓端IM产品的网络链路保活技术实践
本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...
随机推荐
- linux下安装jdk跟tomcat
文章参考 https://www.cnblogs.com/geekdc/p/5607100.html Linux服务器安装jdk+tomcat https://baijiahao.baidu ...
- MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)
原文地址:http://blog.csdn.net/mysteryhaohao/article/details/51669741 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是 ...
- C#-反射知识点
1.反射是基于Sytem.Type的,里面的很多方法是system.reflection里面的 MethodInfo[] tt= t.GetType().GetMethods(); //t是strin ...
- [MST] Create an Entry Form to Add Models to the State Tree
It is time to add new entries to the wishlist. We will achieve this by reusing forms and models we'v ...
- 实现浮点数的四舍五入RoundOff,保留几位小数
直接上代码,非常简短 double myRound(double d,int n) { d = d*pow(10,n); d += 0.5; d = (long)d; d = d/pow(10,n); ...
- 2015百度之星初赛2 1005 序列变换(LIS变形)
LIS(非严格):首先我想到了LIS.然而总认为有点不正确:每一个数先减去它的下标.防止以下的情况发生:(转载) 3 增加序列是1,2,2,2,3,这样求上升子序列是3.也就是要改动2个,可是中间的两 ...
- poj3252-Round Number 组合数学
题目: Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8492 Accepted: 2963 ...
- iOS开发之block解析
1. block的本质是一个Objective-C的对象,为什么这么说? 在Objective-C中,runtime会在执行时依据对象的isa指针的指向,来度额定这个对象的类型,也能够觉得一个对象,它 ...
- 11.怎样自学Struts2之Struts2验证[视频]
11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan. ...
- Xfce4里添加登录后程序自动运行
Xfce4里添加登录后程序自动运行 (注意该方法在登录桌面环境后才会自动运行程序. 在XUbuntu下测试过, Ubuntu下应该是类似的) 方法1: 找到这个东西, 自动添加一下 方法2: 在 .c ...