怎么使用融云消息推送IM的推送功能,融云消息推送推送API

APICloud 融云模块使用教程三连发:教你实现即时通讯功能
14:29:54 +08:00 · 5129 次点击
** [APICloud融云教程第一弹] 聊天会话的实现及UI**
实现功能:融云会话聊天及UI,发送表情消息
使用模块:rongCloud
教程开始:因为融云为第三方模块,每次调试都得需要云编译,建议大家先把UI和基本代码做好。
JS插件使用:zepto.min.js
一、UI的制作
二、融云的链接
详细内容:
** [APICloud融云教程第二弹] 会话列表及获取最新会话消息**
在做会话列表页的时候发现了不少问题,首先我也是第一次使用apicloud和融云,下面讲的可能不是最好的办法,如果有更好的办法欢迎分享。首先说一下会话列表页实现的思路
一、使用 getConversationList 方法来获得全部会话列表,但是这样直接获得的列表并不是我们想要的,rongCloud的会话列表出现了两种情况:
(1)发送者等于本地用户 ;
(2)接收者等于本地用户。
后面实现的功能是只获得接收者为本地用户的情况。
二、获得会话列表后将列表内容插入容器中,同时加载用户信息(主要为头像和昵称)。
三、监听是否有最新消息写入,我这里实现的逻辑是加载完列表后再来监听,这个就根据自己的需要来就行了。
四、如果有新消息进来,两种情况
(1)发送者已在会话列表中存在---&更新会话内容及时间;
(2)不存在---&写入容器。
五、点击会话列表页进入会话窗口,这里遇到了几个问题没能很好的解决,就使用了一个比较笨的办法。
问题:因为会话列表页在监听消息,当打开聊天页面也会在监听最新消息,中间可能会有冲突导致页面无法正常监听
我的解决方案(这个方法可能有点笨):
当打开聊天页面后,关闭会话列表页rongcloud的连接--------关闭聊天页面时关闭聊天页面的连接并重新打开会话列表页的连接,同时监听最新消息并更新下
详细内容:
** [APICloud融云教程第三弹] 完整案例开发,可以上线使用**
期待的第三弹出来,实现的功能主要是整合前两篇讲的并做了下优化,目前已经上线,想体验的可以下载APP。这次讲的去掉了chatbox功能,只是文字消息的发送,如果是做语音和图片的自己可以去扩展。
下载链接:
首先分析下流程:
![enter image description here][1]
流程分析出来了,下面再做一下简单的说明:
会话列表页消息的监听和获取这个地方的实现是比较容易的,但是在打开会话的时候列表页的监听会失效。所以就要在聊天页面来处理消息的监听时间。
在会话页面制作的时候,初次打开监听都是正常的,但是当发完一条消息后发现监听失效。反复的测试初步认为是键盘的弹出导致,可能是监听输入状态跟监听消息由点冲突。
会话页面监听数据时需要监听全局的消息,如果是当前会话的消息就写入,否则只是提示一下有新消息。
关闭会话页面时,因为列表页的监听已经失效,所以要发送一个刷新事件来获取最新消息和一个监听事件的开启。
详细内容:
3 回复 &| &直到
22:39:20 +08:00
& & 15:37:18 +08:00
只有 WEB 技术栈可以使用 APICloud 进行 APP 开发吗?
& & 15:38:46 +08:00
& & 22:39:20 +08:00
APICloud跟融云是什么关系
& · & 2048 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 24ms · UTC 10:52 · PVG 18:52 · LAX 03:52 · JFK 06:52? Do have faith in what you're doing.提供主流cms教程
提供数据库教程和设计
提供各种常见网页js代码
提供常用的JS特效代码及在线演示
提供jQuery插件教程及插件下载
提供服务器常见问题及教程
提供站长技术、站长资讯等内容
提供常用开发手册和开发工具
您现在的位置:& >
HBuilder mui即时通信、im问题汇总。环信、融云怎么集成
导读:在Hello mui里提供了一个chat示例,可以发文字、图片、语音消息,并且可实时收发和显示聊天记录。但这个示例连接的服务器是一个聊天机器人...
在Hello mui里提供了一个chat示例,可以发文字、图片、语音消息,并且可实时收发和显示聊天记录。
但这个示例连接的服务器是一个聊天机器人,一些开发者希望更全套的im服务,包括好友体系和服务器。
此时建议如下:
1. 用Hello mui的im示例的前端代码,与野狗实时的服务器配合使用。这里有个视频教程:&。另外野狗公司也立项开始开发完整的im服务,会特别为5+做优化,预计5月可发布。
2. 用Hello mui的im示例的前端代码,与leancloud的服务器配合使用,含有个推推送。这里有示例包和源码:
3. 使用融云的web sdk,这里有示例
4. 使用5+sdk的方式,封装一个环信或融云等im厂商的原生sdk到js层,给自己的js用。已知一些网友已经开发完毕,但没有共享出来,需要的人可以在外包专区发帖求外包。
5. 用Hello mui的im示例的前端代码,后台自己用socket.io搭一个服务器。
6. 直接调起手机qq,进入qq群或企业qq做交流或客服。参考
如果js版能搞定,就不需要封原生sdk进来,包会小很多,而且这些sdk干啥了你也一清二楚,我们很清楚很多sdk偷偷在后台做乱七八糟的事情,这里就不给大家起底了。
转载请注明(B5教程网)原文链接:
网友评论:君,已阅读到文档的结尾了呢~~
在APICloud平台中融云IM云服务的使用教程
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
在APICloud平台中融云IM云服务的使用教程
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口10732人阅读
java(66)
注:工具类1public class RongCloudMethodUtil {
* 获取token
* @param userId
* @param name
* @param portraitUri
public static String getToken(String userId, String name, String portraitUri) {
String getToken = &.rong.io/user/getToken.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&name&, name);
params.put(&portraitUri&, portraitUri);
byte[] resultA
String token =
resultArray = RongCloudUtil.post(getToken, params, &UTF-8&, 20000);
String result = new String(resultArray);
JSONObject obj = JSONObject.fromObject(result);
token = obj.get(&token&).toString();
} catch (Exception e) {
e.printStackTrace();
System.out.println(&没获取到token&);
* 推送系统信息
* @param content 消息内容
* @param fromUserId 1
* @param toUserId
* @param objectName
* @param pushContent 消息标题
* @param pushData 空-安卓
非空:苹果
public static void pushSystemMessage(String content, String fromUserId,
String toUserId, String objectName, String pushContent,
String pushData) {
String systemMessage = &.rong.io/message/system/publish.json&;
Map&String, String& params = new HashMap&String, String&();
// String content=&{\&content\&:\&2\&}&;
params.put(&content&, content);
params.put(&fromUserId&, fromUserId);
params.put(&toUserId&, toUserId);
params.put(&objectName&, objectName);
params.put(&pushContent&, pushContent);
params.put(&pushData&, pushData);
byte[] resultA
resultArray = RongCloudUtil.post(systemMessage, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&发送信息出错了&);
* 刷新个人信息
* @param userId
* @param name
* @param portraitUri
public static void refreshUserInformation(String userId, String name,
String portraitUri) {
String refresh = &.rong.io/user/refresh.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&name&, name);
params.put(&portraitUri&, portraitUri);
byte[] resultA
resultArray = RongCloudUtil.post(refresh, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&哎呀,刷新没成功&);
* 检查某人是否在线
* @param userId
public static void checkOnline(String userId) {
String checkOnline = &.rong.io/user/checkOnline.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
byte[] resultA
resultArray = RongCloudUtil.post(checkOnline, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&系统维护&);
public static void block(String userId, String minute) {
String block = &.rong.io/user/block.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&minute&, minute);// 禁言时间,单位为分钟
byte[] resultA
resultArray = RongCloudUtil.post(block, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&禁言没成功&);
* 解禁用户
* @param userId
public static void unblock(String userId) {
String unblock = &.rong.io/user/unblock.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
byte[] resultA
resultArray = RongCloudUtil.post(unblock, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&解禁没成功&);
* 查询被禁人员
public static void queryBlack() {
String query = &.rong.io/user/block/query.json&;
byte[] resultA
resultArray = RongCloudUtil.post(query, null, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&查询没成功&);
* 添加黑名单
public static void addBlack(String userId, String blackUserId) {
String add = &.rong.io/user/blacklist/add.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&blackUserId&, blackUserId);
byte[] resultA
resultArray = RongCloudUtil.post(add, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&添加没成功&);
* 删除黑名单
* @param userId
* @param blackUserId
public static void removeBlack(String userId, String blackUserId) {
String remove = &.rong.io/user/blacklist/remove.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&blackUserId&, blackUserId);
byte[] resultA
resultArray = RongCloudUtil.post(remove, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&删除没成功&);
* 查询所有加黑用户
public static void blacklist(String userId, String blackUserId) {
String blacklist = &.rong.io/user/blacklist/query.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&blackUserId&, blackUserId);
byte[] resultA
resultArray = RongCloudUtil.post(blacklist, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&查询加黑名单异常&);
public static void oneToOneMessege(String content, String fromUserId,
String toUserId, String objectName, String pushContent,
String pushData) {
String oneToOne = &.rong.io/message/private/publish.json&;
Map&String, String& params = new HashMap&String, String&();
// String content=&{\&content\&:\&2\&}&;
params.put(&content&, content);
params.put(&fromUserId&, fromUserId);
params.put(&toUserId&, toUserId);
params.put(&objectName&, objectName);
params.put(&pushContent&, pushContent);
params.put(&pushData&, pushData);
byte[] resultA
resultArray = RongCloudUtil.post(oneToOne, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&单聊信息发送异常&);
* 发送群信息
* @param content
* @param fromUserId
* @param toGroupId
* @param objectName
* @param pushContent
* @param pushData
public static void groupMessege(String content, String fromUserId,
String toGroupId, String objectName, String pushContent,
String pushData) {
String groupMessege = &.rong.io/message/group/publish.json&;
Map&String, String& params = new HashMap&String, String&();
// String content=&{\&content\&:\&2\&}&;
params.put(&content&, content);
params.put(&fromUserId&, fromUserId);
params.put(&toGroupId&, toGroupId);
params.put(&objectName&, objectName);
params.put(&pushContent&, pushContent);
params.put(&pushData&, pushData);
byte[] resultA
resultArray = RongCloudUtil.post(groupMessege, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&群组信息发送异常&);
* 发送聊天室消息
* @param content
* @param fromUserId
* @param toGroupId
* @param objectName
* @param pushContent
* @param pushData
public static void chatroom(String content, String fromUserId,
String toGroupId, String objectName, String pushContent,
String pushData) {
String chatroom = &.rong.io/message/chatroom/publish.json&;
Map&String, String& params = new HashMap&String, String&();
// String content=&{\&content\&:\&2\&}&;
params.put(&content&, content);
params.put(&fromUserId&, fromUserId);
params.put(&toGroupId&, toGroupId);
params.put(&objectName&, objectName);
params.put(&pushContent&, pushContent);
params.put(&pushData&, pushData);
byte[] resultA
resultArray = RongCloudUtil.post(chatroom, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&聊天信息发送异常&);
* 发送广播消息
public static void broadcast(String content, String fromUserId,
String objectName, String pushContent, String pushData) {
String broadcast = &.rong.io/message/broadcast.json&;
Map&String, String& params = new HashMap&String, String&();
// String content=&{\&content\&:\&2\&}&;
params.put(&content&, content);
params.put(&fromUserId&, fromUserId);
params.put(&objectName&, objectName);
params.put(&pushContent&, pushContent);
params.put(&pushData&, pushData);
byte[] resultA
resultArray = RongCloudUtil.post(broadcast, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&广播发送异常&);
* 查某个时段会话历史
public static void history(String date) {
String history = &.rong.io/message/history.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&date&, date);
byte[] resultA
resultArray = RongCloudUtil.post(history, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&查找历史记录异常&);
* 删除信息记录
public static void deleteHistory(String date) {
String deleteHistory = &.rong.io/message/history/delete.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&date&, date);
byte[] resultA
resultArray = RongCloudUtil.post(deleteHistory, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&删除群组异常&);
* 同步群组信息
* @param group
* @param userId
public static void groupSync(String[] group, String userId) {
String groupSync = &.rong.io/group/sync.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, &1&);
for (int i = 0; i & group. i++) {
params.put(&group[& + i + &]&, group[i]);
byte[] resultA
resultArray = RongCloudUtil.post(groupSync, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&同步群组信息异常&);
* 创建群组
public static void createGroup(String userId, String groupId,
String groupName) {
String createGroup = &.rong.io/group/create.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&groupId&, groupId);
params.put(&groupName&, groupName);
byte[] resultA
resultArray = RongCloudUtil.post(createGroup, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&创建群组异常&);
* 加入群组
public static void joinGroup(String userId, String groupId, String groupName) {
String joinGroup = &.rong.io/group/join.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&groupId&, groupId);
params.put(&groupName&, groupName);
byte[] resultA
resultArray = RongCloudUtil.post(joinGroup, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&加入群组异常&);
* 退出群组
public static void quitGroup(String userId, String groupId) {
String quitGroup = &.rong.io/group/quit.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&groupId&, groupId);
byte[] resultA
resultArray = RongCloudUtil.post(quitGroup, params, &UTF-8&, 20000);
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&退出群组异常&);
* 解散群组
public static void dismissGroup(String userId, String groupId) {
String dismissGroup = &.rong.io/group/dismiss.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&groupId&, groupId);
byte[] resultA
resultArray = RongCloudUtil.post(dismissGroup, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&解散群组异常&);
* 刷新群组
public static void refreshGroup(String userId, String groupId,
String groupName) {
String refreshGroup = &.rong.io/group/refresh.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&userId&, userId);
params.put(&groupId&, groupId);
params.put(&groupName&, groupName);
byte[] resultA
resultArray = RongCloudUtil.post(refreshGroup, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&刷新群组异常&);
* 创建聊天室
* @param chartroom
public static void createChatroom(String[] chartroom) {
String refreshGroup = &.rong.io/chatroom/create.json&;
Map&String, String& params = new HashMap&String, String&();
for (int i = 0; i & chartroom. i++) {
params.put(&chartroom[& + i + &]&, &testChartRoom& + i);
byte[] resultA
resultArray = RongCloudUtil.post(refreshGroup, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&创建聊天室异常&);
* 注销聊天室
public static void destroyChatroom(String chatroomId) {
String destroyChatroom = &.rong.io/chatroom/destroy.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&chatroomId&, chatroomId);
byte[] resultA
resultArray = RongCloudUtil.post(destroyChatroom, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&注销异常&);
* 查询某个聊天室
* @param chatroomId
public static void queryChatroom(String chatroomId) {
String queryChatroom = &.rong.io/chatroom/query.json&;
Map&String, String& params = new HashMap&String, String&();
params.put(&chatroomId&, chatroomId);
byte[] resultA
resultArray = RongCloudUtil.post(queryChatroom, params, &UTF-8&,
String result = new String(resultArray);
System.out.println(result);
} catch (Exception e) {
System.out.println(&查询聊天室异常&);
注:工具类2
public class RongCloudUtil {
private final static String appkey = &&;// 申请的融云key
private final static String appSecret = &&;// 申请的的云secret
private final static int[] abcde = { 0xxefcdab89, 0x98badcfe,
0xxc3d2e1f0 };// sha1加密产参数
// 摘要数据存储数组
private static int[] digestInt = new int[5];
// 计算过程中的临时数据存储数组
private static int[] tmpData = new int[80];
// 计算sha-1摘要
private static int process_input_bytes(byte[] bytedata) {
// 初试化常量
System.arraycopy(abcde, 0, digestInt, 0, abcde.length);
// 格式化输入字节数组,补10及长度数据
byte[] newbyte = byteArrayFormatData(bytedata);
// 获取数据摘要计算的数据单元个数
int MCount = newbyte.length / 64;
// 循环对每个数据单元进行摘要计算
for (int pos = 0; pos & MC pos++) {
// 将每个单元的数据转换成16个整型数据,并保存到tmpData的前16个数组元素中
for (int j = 0; j & 16; j++) {
tmpData[j] = byteArrayToInt(newbyte, (pos * 64) + (j * 4));
// 摘要计算函数
encrypt();
return 20;
// 格式化输入字节数组格式
private static byte[] byteArrayFormatData(byte[] bytedata) {
// 补0数量
int zeros = 0;
// 补位后总位数
int size = 0;
// 原始数据长度
int n = bytedata.
// 模64后的剩余位数
int m = n % 64;
// 计算添加0的个数以及添加10后的总长度
if (m & 56) {
zeros = 55 -
size = n - m + 64;
} else if (m == 56) {
zeros = 63;
size = n + 8 + 64;
zeros = 63 - m + 56;
size = (n + 64) - m + 64;
// 补位后生成的新数组内容
byte[] newbyte = new byte[size];
// 复制数组的前面部分
System.arraycopy(bytedata, 0, newbyte, 0, n);
// 获得数组Append数据元素的位置
// 补1操作
newbyte[l++] = (byte) 0x80;
// 补0操作
for (int i = 0; i & i++) {
newbyte[l++] = (byte) 0x00;
// 计算数据长度,补数据长度位共8字节,长整型
long N = (long) n * 8;
byte h8 = (byte) (N & 0xFF);
byte h7 = (byte) ((N && 8) & 0xFF);
byte h6 = (byte) ((N && 16) & 0xFF);
byte h5 = (byte) ((N && 24) & 0xFF);
byte h4 = (byte) ((N && 32) & 0xFF);
byte h3 = (byte) ((N && 40) & 0xFF);
byte h2 = (byte) ((N && 48) & 0xFF);
byte h1 = (byte) (N && 56);
newbyte[l++] = h1;
newbyte[l++] = h2;
newbyte[l++] = h3;
newbyte[l++] = h4;
newbyte[l++] = h5;
newbyte[l++] = h6;
newbyte[l++] = h7;
newbyte[l++] = h8;
private static int f1(int x, int y, int z) {
return (x & y) | (~x & z);
private static int f2(int x, int y, int z) {
return x ^ y ^
private static int f3(int x, int y, int z) {
return (x & y) | (x & z) | (y & z);
private static int f4(int x, int y) {
return (x && y) | x &&& (32 - y);
// 单元摘要计算函数
private static void encrypt() {
for (int i = 16; i &= 79; i++) {
tmpData[i] = f4(tmpData[i - 3] ^ tmpData[i - 8] ^ tmpData[i - 14]
^ tmpData[i - 16], 1);
int[] tmpabcde = new int[5];
for (int i1 = 0; i1 & tmpabcde. i1++) {
tmpabcde[i1] = digestInt[i1];
for (int j = 0; j &= 19; j++) {
int tmp = f4(tmpabcde[0], 5)
+ f1(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
+ tmpData[j] + 0x5a827999;
tmpabcde[4] = tmpabcde[3];
tmpabcde[3] = tmpabcde[2];
tmpabcde[2] = f4(tmpabcde[1], 30);
tmpabcde[1] = tmpabcde[0];
tmpabcde[0] =
for (int k = 20; k &= 39; k++) {
int tmp = f4(tmpabcde[0], 5)
+ f2(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
+ tmpData[k] + 0x6ed9eba1;
tmpabcde[4] = tmpabcde[3];
tmpabcde[3] = tmpabcde[2];
tmpabcde[2] = f4(tmpabcde[1], 30);
tmpabcde[1] = tmpabcde[0];
tmpabcde[0] =
for (int l = 40; l &= 59; l++) {
int tmp = f4(tmpabcde[0], 5)
+ f3(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
+ tmpData[l] + 0x8f1
tmpabcde[4] = tmpabcde[3];
tmpabcde[3] = tmpabcde[2];
tmpabcde[2] = f4(tmpabcde[1], 30);
tmpabcde[1] = tmpabcde[0];
tmpabcde[0] =
for (int m = 60; m &= 79; m++) {
int tmp = f4(tmpabcde[0], 5)
+ f2(tmpabcde[1], tmpabcde[2], tmpabcde[3]) + tmpabcde[4]
+ tmpData[m] + 0xca62c1d6;
tmpabcde[4] = tmpabcde[3];
tmpabcde[3] = tmpabcde[2];
tmpabcde[2] = f4(tmpabcde[1], 30);
tmpabcde[1] = tmpabcde[0];
tmpabcde[0] =
for (int i2 = 0; i2 & tmpabcde. i2++) {
digestInt[i2] = digestInt[i2] + tmpabcde[i2];
for (int n = 0; n & tmpData. n++) {
tmpData[n] = 0;
// 4字节数组转换为整数
private static int byteArrayToInt(byte[] bytedata, int i) {
return ((bytedata[i] & 0xff) && 24) | ((bytedata[i + 1] & 0xff) && 16)
| ((bytedata[i + 2] & 0xff) && 8) | (bytedata[i + 3] & 0xff);
// 整数转换为4字节数组
private static void intToByteArray(int intValue, byte[] byteData, int i) {
byteData[i] = (byte) (intValue &&& 24);
byteData[i + 1] = (byte) (intValue &&& 16);
byteData[i + 2] = (byte) (intValue &&& 8);
byteData[i + 3] = (byte) intV
// 将字节转换为十六进制字符串
private static String byteToHexString(byte ib) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char[] ob = new char[2];
ob[0] = Digit[(ib &&& 4) & 0X0F];
ob[1] = Digit[ib & 0X0F];
String s = new String(ob);
// 将字节数组转换为十六进制字符串
private static String byteArrayToHexString(byte[] bytearray) {
String strDigest = &&;
for (int i = 0; i & bytearray. i++) {
strDigest += byteToHexString(bytearray[i]);
return strD
// 计算sha-1摘要,返回相应的字节数组
public static byte[] getDigestOfBytes(byte[] byteData) {
process_input_bytes(byteData);
byte[] digest = new byte[20];
for (int i = 0; i & digestInt. i++) {
intToByteArray(digestInt[i], digest, i * 4);
// 计算sha-1摘要,返回相应的十六进制字符串
public static String getDigestOfString(byte[] byteData) {
return byteArrayToHexString(getDigestOfBytes(byteData));
* 发送post请求
* @param path
* @param params
* @param encode
* @param timeout
超时时间(秒)
* @return byte[] byte数组
* @throws Exception
public static byte[] post(String path, Map&String, String& params,
String encode, int timeout) throws Exception {
byte[] resultBuffer =
Double nonce = Math.floor(Math.random() * 100000 + 100000);
Long timestamp = Timestamp.valueOf(& 00:00:00&).getTime();
String signature = getDigestOfString((appSecret + nonce + timestamp)
.getBytes());
StringBuilder parambuilder = new StringBuilder(&&);
if (params != null && !params.isEmpty()) {
for (Map.Entry&String, String& entry : params.entrySet()) {
parambuilder.append(entry.getKey()).append(&=&)
.append(URLEncoder.encode(entry.getValue(), encode))
.append(&&&);
parambuilder.deleteCharAt(parambuilder.length() - 1);
byte[] data = parambuilder.toString().getBytes();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setConnectTimeout(timeout * 1000);
conn.setReadTimeout(timeout * 1000);
conn.setRequestMethod(&POST&);
conn.setRequestProperty(
&image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*&);
conn.setRequestProperty(&Accept-Language&, &zh-CN&);
conn.setRequestProperty(&App-Key&, appkey);
conn.setRequestProperty(&Nonce&, nonce + &&);
conn.setRequestProperty(&Timestamp&, timestamp + &&);
conn.setRequestProperty(&Signature&, signature);
conn.setRequestProperty(
&User-Agent&,
&Mozilla/4.0 ( MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.; .NET CLR 3.5.30729)&);
conn.setRequestProperty(&Content-Type&,
&application/x-www-form-urlencoded&);
conn.setRequestProperty(&Content-Length&, String.valueOf(data.length));
conn.setRequestProperty(&Connection&, &Keep-Alive&);
DataOutputStream outStream = new DataOutputStream(
conn.getOutputStream());
outStream.write(data);
outStream.flush();
outStream.close();
if (conn.getResponseCode() == 200) {
resultBuffer = readStream(conn.getInputStream());
conn.disconnect();
return resultB
* 解析输入流
* @param inStream
* @return byte[] byte数组
* @throws Exception
private static byte[] readStream(InputStream inStream) throws Exception {
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
outSteam.close();
inStream.close();
return outSteam.toByteArray();
注:使用方法
注册用户:RongCloudMethodUtil.getToken(&用户唯一标示&, &&, &&)////消息内容   服务器id  用户id  消息类型    消息标题   空-推送安卓,非空-推送苹果推送消息:RongCloudMethodUtil.pushSystemMessage(content, fromUserId, toUserId, objectName, pushContent, pushData);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1099447次
积分:10423
积分:10423
排名:第1722名
原创:55篇
转载:57篇
评论:446条
文章:10篇
阅读:105435
文章:20篇
阅读:198203
文章:61篇
阅读:567470
(2)(4)(4)(2)(2)(1)(7)(16)(3)(5)(5)(4)(2)(3)(1)(1)(3)(3)(7)(4)(2)(7)(13)(4)(8)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 融云消息推送 的文章

 

随机推荐