友盟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)是为开发者提供的消息推送平台,建立了从云端到手机端的消息推送通道,使应用可以将最新信息及时通知用户,从而构筑良好的用户关系,提升用户的感知和活跃 ...
随机推荐
- Pytest系列(30)- 使用 pytest-xdist 分布式插件,如何保证 scope=session 的 fixture 在多进程运行情况下仍然能只运行一次
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 背景 使用 pytest-xdis ...
- 9.while循环
while 循环 语法: while( 布尔表达式 ) { //循环内容 } 布尔值为 true 开始循环,为 false 结束循环 死循环:布尔值一直为 true. 例: package com.w ...
- php中var关键字用法
见很多朋友说在php中定义变量用不用var都没关系,其实不然. 看看例子,如果我这样使用var: 1 var $a=123; 2 echo $a; 3 //那么程序会提示语法错误,要去掉var这个变量 ...
- CVE-2012-1876:Internet Exporter MSHTML.DLL CaculateMinMax 堆溢出简单分析
0x01 2012 Pwn2Own 黑客大赛 Pwn2Own 是世界上最著名的黑客大赛,意在激励白帽黑客们进行顶尖的安全研究.在 2012 年 Pwn2Own 大赛上,来自法国著名的安全团队 Vupe ...
- SQL注入注释符(#、-- 、/**/)使用条件及其他注释方式的探索
以MySQL为例,首先我们知道mysql注释符有#.-- (后面有空格)./**/三种,在SQL注入中经常用到,但是不一定都适用.笔者在sqlilabs通关过程中就遇到不同场景用的注释符不同,这让我很 ...
- 【】POST、GET、RequestParam、ReqestBody、FormData、request payLoad简单认知
背景: 使用vue+axios方式代替ajax后向后台发送数据出现问题了,controller获取不到数据.然后查.找.查.找中似乎找到一些门道.以下列出总结性的东西来记录自己的思考成果,仅供参考,不 ...
- JAVA教程 Java学习路线
- 【Redis】启动redis提示Could not connect to Redis at 127.0.0.1:6379: Connection refused 已解决
1.配置redis.conf文件,将daemonize no 为 daemonize yes即可(让redis作为守护进程运行)
- Mybatis学习之自定义持久层框架(一) 为什么要用框架而不直接用JDBC?
前言 说起Mybatis,相信大家都不会感到陌生,它是一款优秀的持久层框架,应用于java后端开发中,为客户端程序提供访问数据库的接口. 我们都知道,JDBC是Java语言中用来规范客户端程序如何来访 ...
- 【Matlab】BFSK的调制与解调仿真
写在前面 本篇是[Matlab]BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将BFSK的调制与解调仿真. 索引 写在前面 一.BFSK的调制 1.1 异频载波生成 1.2 信号合并 ...