友盟umeng消息推送直接复制就能用(纯干货)
一. 单播推送(unicast)
1.1 图

1.2 代码
1 /**
2 * 根据设备的deviceToken, 去给指定的设备推送消息
3 *
4 * @param deviceToken 单个deviceToken, 指定设备
5 */
6 public void sendAndroidUnicast(String deviceToken) throws Exception {
7
8 AndroidUnicast unicast = new AndroidUnicast(appkey, appMasterSecret);
9
10 // Android端会获取到 device_token, 直接找Android工程师要就行
11 unicast.setDeviceToken(deviceToken);
12
13 // 当你没有下拉通知栏的时候, 写入的文字会在顶端翻转显示
14 unicast.setTicker("看这里");
15
16 // 标题
17 unicast.setTitle("单播推送");
18
19 // 内容
20 unicast.setText("今晚啤酒小烧烤");
21
22 // 修改以后, 使用过程中需要跟Android商量好
23 unicast.goAppAfterOpen(); // 点击"通知"的后续行为,默认为打开app。
24 // unicast.goUrlAfterOpen("127.0.0.1"); // 点击"通知"的后续行为,跳转到URL。
25 // unicast.goActivityAfterOpen(""); // 点击"通知"的后续行为,打开特定的activity。
26 // unicast.goCustomAfterOpen(""); // 点击"通知"的后续行为,用户自定义内容, 可传输JSONObject, 也可传输String。
27
28 /**
29 * NOTIFICATION 是友盟做处理在通知栏上显示通知内容
30 * MESSAGE 是传给应用自身进行解析处理
31 */
32 unicast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
33
34 // 测试模式使用false, 正式模式使用true
35 unicast.setProductionMode();
36
37 // 自定义的一些东西
38 unicast.setExtraField("test", "helloworld");
39 unicast.setChannelActivity("your channel activity");
40 unicast.setChannelProperties("abc");
41
42 client.send(unicast);
43 }
二. 列播推送(listcast)
由于列播推送, 友盟当中的SDK 并没有给, 所以后面自己写了一份
1.1 图

2.2 代码(包括所用实体类)
2.2.1 实体类
1 import push.AndroidNotification;
2
3 /**
4 * 列播(要求不超过500个device_token) 用英文逗号隔开
5 */
6 public class AndroidColumnOn extends AndroidNotification {
7
8 public AndroidColumnOn(String appkey,String appMasterSecret) throws Exception {
9 setAppMasterSecret(appMasterSecret);
10 setPredefinedKeyValue("appkey", appkey);
11 this.setPredefinedKeyValue("type", "listcast"); // type = listcast 是群体发送
12 }
13
14 public void setDeviceToken(String token) throws Exception {
15 setPredefinedKeyValue("device_tokens", token);
16 }
17
18 }
2.2.2 推送代码
1 /**
2 * 列播推送
3 *
4 * @param deviceToken 多个device_tokens是用英文逗号间隔, 不能超过五百个
5 */
6 public void sendAndroidColumnOn(String deviceToken) throws Exception {
7 // 自定义实体类, 附有代码
8 AndroidColumnOn columnOn = new AndroidColumnOn(appkey, appMasterSecret);
9
10 // 列播中 传入的deviceToken类似于 1,2,3,4,5
11 columnOn.setDeviceToken(deviceToken);
12
13 // 当你没有下拉通知栏的时候, 写入的文字会在顶端翻转显示, 有的可以显示有的不可以显示, 看你设置和设备的允许情况
14 columnOn.setTicker("看过来");
15
16 // 标题
17 columnOn.setTitle("群体推送");
18
19 // 内容
20 columnOn.setText("鱼香肉丝");
21
22 // 点击"通知"的后续行为,默认为打开app。
23 columnOn.goAppAfterOpen();
24
25 /**
26 * NOTIFICATION 是友盟做处理在通知栏上显示通知内容
27 * MESSAGE 是传给应用自身进行解析处理
28 */
29 columnOn.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
30
31 // 测试模式使用false, 正式模式使用true
32 columnOn.setProductionMode();
33
34 // Set customized fields
35 columnOn.setExtraField("test", "helloworld");
36
37 // 自定义的一些东西
38 columnOn.setChannelActivity("your channel activity");
39 columnOn.setChannelProperties("abc");
40 client.send(columnOn);
41 }
三. 广播推送(boradcast)
广播推送只有 setProductionMode 是ture , 也就是正式模式才可以使用,只会将消息发送给测试设备
3.1 图

3.2 代码
1 /**
2 * 广播模式不需要device_tokens, 应该是根据你的 appkey 和 appMasterSecret 找到你所存储在这两里面的device_tokens, 然后整个推送
3 */
4 public void sendAndroidBroadcast() throws Exception {
5 AndroidBroadcast broadcast = new AndroidBroadcast(appkey, appMasterSecret);
6 broadcast.setTicker("Android broadcast ticker");
7 broadcast.setTitle("这是广播");
8 broadcast.setText("广播数据");
9 broadcast.goAppAfterOpen();
10
11 broadcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
12 // 默认ture, 如果是false的话是收不到推送的
13 broadcast.setProductionMode();
14 // 自定义信息
15 broadcast.setExtraField("test", "helloworld");
16 //厂商通道相关参数
17 broadcast.setChannelActivity("your channel activity");
18 broadcast.setChannelProperties("abc");
19 client.send(broadcast);
20 }
四. 广播推送状态(参数为task_id)
4.1 图


4.2 代码
1 /**
2 * 广播推送状态 根据taskId 获取推送成功以后数量
3 */
4 private void pushStatus(String taskId){
5 try {
6 String s = client.getPushStatus(appkey, taskId, appMasterSecret);
7 System.out.println(s);
8 UMengStatusResult result = JSON.parseObject(s, UMengStatusResult.class);
9 //推送接收统计数目
10 Map<String, Object> data = result.getData();
11 System.out.println("推送接收统计数目 -> " + data.get("sent_count"));
12 System.out.println("推送打开统计数目 -> " + data.get("open_count"));
13 System.out.println("推送被忽略统计数目 -> " + data.get("dismiss_count"));
14 } catch (Exception e) {
15 e.printStackTrace();
16 }
17 }
1 public String getPushStatus(String appkey,String task_id,String appMasterSecret) throws Exception {
2 JSONObject getStatus = new JSONObject();
3
4 getStatus.put("appkey", appkey);
5
6 String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));
7
8 getStatus.put("timestamp", timestamp);
9
10 getStatus.put("task_id",task_id);
11
12 String url = host + statusPath;
13
14 String postBody = getStatus.toString();
15
16 String sign = DigestUtils.md5Hex(("POST" + url + postBody + appMasterSecret).getBytes("utf8"));
17
18 url = url + "?sign=" + sign;
19
20 HttpPost post = new HttpPost(url);
21
22 post.setHeader("User-Agent", USER_AGENT);
23
24 StringEntity se = new StringEntity(postBody, "UTF-8");
25
26 post.setEntity(se);
27
28 // post请求获取响应
29 HttpResponse response = client.execute(post);
30
31 System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
32
33 BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
34
35 StringBuffer result = new StringBuffer();
36 String line = "";
37 while ((line = rd.readLine()) != null) {
38 result.append(line);
39 }
40
41 return result.toString();
42 }
文件播类似于列播, 区别是 列播用英文逗号分隔, 而文件播用 \n 分隔(文件播使用就是把所有device_tokens用 \n分隔, 然后存入文件中, 发送给友盟)
关于 alias 这些播送的, 可以试着自己写一下, 总体办法就是将 device_tokens 绑定设置的 alias , 然后把 传送给友盟的 device_token变成了 alias传送。
附加友盟开发者中心链接:
https://developer.umeng.com/docs/66632/detail/68343#h1-u6D88u606Fu53D1u90014
参数文档:
https://developer.umeng.com/docs/67966/detail/149296#h1--g-7
友盟umeng消息推送直接复制就能用(纯干货)的更多相关文章
- .NET手记-友盟消息推送服务器端加密算法的实现
最近为App开发消息推送功能,这里我们采用了友盟的消息推送服务,但其后台简陋,可定制化程度低,所以决定接入服务器端API,在自己的服务器上部署一套推送服务. 其中涉及到很多问题,首先要解决的就是与友盟 ...
- 【转载自友盟消息推送iOS文档】在appDelegate中注册推送
1.2 基本功能集成指南 提示 请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret 导入SDK 下载 UMessage_Sdk_All_x.x.x.zip并解压缩 导入 ...
- umeng友盟消息推送功能集成
umeng友盟消息推送功能集成(本人使用的是eclipse开发) 1.首先请自行观看友盟消息推送集成的API文档. 观看地址如下: http://dev.umeng.com/push/android/ ...
- 为友盟消息推送开发的PHP SDK(composer版):可以按省发Android push
一直以来APP希望按省市县推送Android push,只能自己分析用户经纬度,打tag发送. 现在终于有服务商提供了. 友盟消息推送 可以“按省推送”,很方便. 我为友盟做了PHP SDK(comp ...
- 友盟消息推送api、python sdk问题、测试demo代码
一,友盟消息推送python服务端sdk地址和文档地址 1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMT ...
- 使用PoolingHttpClientConnectionManager解决友盟(umeng)推送在多线程环境推送失败的问题
在友盟(umeng)提供的服务端推送的sdk中,使用的是apache提供的httpclient.在单线程化境下,httpclient工作没有问题.但是由于umeng的sdk中并未考虑并发的情况,因此很 ...
- android 消息推送
android 消息推送 极光推送百度云推送(语音)友盟消息推送
- 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)
1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...
- Android 生态消息推送平台介绍
一.手机厂商平台 华为消息推送服务 华为推送(Push)是为开发者提供的消息推送平台,建立了从云端到手机端的消息推送通道,使应用可以将最新信息及时通知用户,从而构筑良好的用户关系,提升用户的感知和活跃 ...
随机推荐
- Day17_105_IO_BufferWriter带缓冲区的字符输出流
BufferWriter带缓冲区的字符输出流 * OutputStreamWriter(); 转换流,可以将文件字节输出流转换为文件字符输出流 * 代码: import java.io.*; publ ...
- Django中的CBV视图
Web 开发是一项无聊而且单调的工作,特别是在视图功能编写方面更为显著.为了减少这种痛苦,Django植入了视图类这一功能,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发, ...
- 在Bootstrap开发框架基础上增加WebApi+Vue&Element的前端
基于Metronic的Bootstrap开发框架是我们稍早一点的框架产品,界面部分采用较新的Bootstrap技术,框架后台数据库支持Oracle.SqlServer.MySql.PostgreSQL ...
- centos7安装kubernetes k8s 1.16
#初始化服务器 echo 'export LC_ALL="en_US.UTF-8"' >> /etc/profile source /etc/profile #!/bi ...
- vue route 跳转
index.js { path: '/grouporder/grouporderdetail/id/:id', name: '/grouporder/grouporderdetail/id/', co ...
- hdu1960 最小路径覆盖
题意: 给你明天的出租车订单,订单中包含每个人的起点和终点坐标,还有时间,如果一辆出租车想接一个乘客必须在每个订单前1分钟到达,也就是小于等于time-1,问你完成所有订单要最少多少量出租 ...
- Win64 驱动内核编程-12.回调监控进线程创建和退出
回调监控进线程创建和退出 两个注册回调的函数:PsSetCreateProcessNotifyRoutine 进程回调PsSetCreateThreadNotifyRoutine 线程回调分 ...
- 18张图带你入门最新版JumpServer
环境要求 docker-ce Python3+ mysql5.6+ Redis 1 Ubuntu 安装 docker-ce 环境 参考文档 https://docs.docker.com/engine ...
- python通过字符串定义函数名
记录python里的一个有意思的小技巧:通过字符串定义函数名称. import sys m=sys.modules[__name__] def temp(x): return x+1 setattr( ...
- Vue.js源码解析-从scripts脚本看vue构建
目录 1. scripts 脚本构建 1.1 dev 开发环境构建过程 1.1.1 配置文件代码 1.1.2 如何进行代码调试? 1.2 build 生产环境构建过程 1.2.1 scripts/bu ...