一. 单播推送(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消息推送直接复制就能用(纯干货)的更多相关文章

  1. .NET手记-友盟消息推送服务器端加密算法的实现

    最近为App开发消息推送功能,这里我们采用了友盟的消息推送服务,但其后台简陋,可定制化程度低,所以决定接入服务器端API,在自己的服务器上部署一套推送服务. 其中涉及到很多问题,首先要解决的就是与友盟 ...

  2. 【转载自友盟消息推送iOS文档】在appDelegate中注册推送

    1.2   基本功能集成指南 提示 请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret 导入SDK 下载 UMessage_Sdk_All_x.x.x.zip并解压缩 导入 ...

  3. umeng友盟消息推送功能集成

    umeng友盟消息推送功能集成(本人使用的是eclipse开发) 1.首先请自行观看友盟消息推送集成的API文档. 观看地址如下: http://dev.umeng.com/push/android/ ...

  4. 为友盟消息推送开发的PHP SDK(composer版):可以按省发Android push

    一直以来APP希望按省市县推送Android push,只能自己分析用户经纬度,打tag发送. 现在终于有服务商提供了. 友盟消息推送 可以“按省推送”,很方便. 我为友盟做了PHP SDK(comp ...

  5. 友盟消息推送api、python sdk问题、测试demo代码

    一,友盟消息推送python服务端sdk地址和文档地址 1.sdk地址:http://dev.umeng.com/system/resources/W1siZiIsIjIwMTYvMDgvMTkvMT ...

  6. 使用PoolingHttpClientConnectionManager解决友盟(umeng)推送在多线程环境推送失败的问题

    在友盟(umeng)提供的服务端推送的sdk中,使用的是apache提供的httpclient.在单线程化境下,httpclient工作没有问题.但是由于umeng的sdk中并未考虑并发的情况,因此很 ...

  7. android 消息推送

    android 消息推送 极光推送百度云推送(语音)友盟消息推送

  8. 基于APNs最新HTTP/2接口实现iOS的高性能消息推送(服务端篇)

    1.前言 本文要分享的消息推送指的是当iOS端APP被关闭或者处于后台时,还能收到消息/信息/指令的能力. 这种在APP处于后台或关闭情况下的消息推送能力,通常在以下场景下非常有用: 1)IM即时通讯 ...

  9. Android 生态消息推送平台介绍

    一.手机厂商平台 华为消息推送服务 华为推送(Push)是为开发者提供的消息推送平台,建立了从云端到手机端的消息推送通道,使应用可以将最新信息及时通知用户,从而构筑良好的用户关系,提升用户的感知和活跃 ...

随机推荐

  1. 刨死你系列——手撕ArrayList

    不多BB,直接上代码: public class MyArrayList { //创建数组对象 private Object[] elements; //已使用数组长度 private int siz ...

  2. odoo字段属性列举

    罗列一些Odoo中的字段属性,基本包含大部分的属性. 常用字段属性 平平无奇常用字段属性 string:字段的标题,在UI视图标签中使用.它是可选项,如未设置,会通过首字母大写及将空格替换成为下划线来 ...

  3. 软件篇-04-OMPL和FCL用于SLAM轨迹规划

    使用OMPL内置的infoRRTstar算法模块和FCL碰撞检测库实现当前点和目标点的轨迹规划, 参考文章:https://www.cnblogs.com/shhu1993/p/7062099.htm ...

  4. 缓冲区溢出分析第04课:ShellCode的编写

    前言 ShellCode究竟是什么呢,其实它就是一些编译好的机器码,将这些机器码作为数据输入,然后通过我们之前所讲的方式来执行ShellCode,这就是缓冲区溢出利用的基本原理.那么下面我们就来编写S ...

  5. Python爬虫之使用正则表达式抓取数据

    目录 匹配标签 匹配title标签 a标签 table标签 匹配标签里面的属性 匹配a标签里面的URL 匹配img标签里的 src 相关文章:Linux中的正则表达式 Python中的正则表达式 实例 ...

  6. UVA11389巴士司机问题

    题意:       有n个巴士司机,然后有2n个活,其中有n个是上午,n个是下午,每个自己都要选择一个上午的和一个下午的,每个活都有驾驶距离,如果一个司机每天的驾驶距离大于d,那么超出的部分就要每个单 ...

  7. 如何解决异步接口请求快慢不均导致的数据错误问题? - DevUI

    DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸.灵活.至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠.取悦眼球的设计.如果你正在开发 ToB 的工具类产 ...

  8. 在 Linux 如何优雅的统计程序运行时间?恕我直言,你运行的可能是假 time

    最近在使用 time 命令时,无意间发现了一些隐藏的小秘密和强大功能,今天分享给大家. time 在 Linux 下是比较常用的命令,可以帮助我们方便的计算程序的运行时间,对比采用不同方案时程序的运行 ...

  9. 脱壳入门----脱ASPack壳保护的DLL

    前言 结合脱dll壳的基本思路,对看雪加密解密里的一个ASPack壳保护的dll进行脱壳分析. 脱壳详细过程 寻找程序的OEP 先将目标DLL拖入OD,来到壳的入口处. 然后利用堆栈平衡原理在push ...

  10. MySQL查看及杀掉链接方法大全

    前言: 在数据库运维过程中,我们时常会关注数据库的链接情况,比如总共有多少链接.有多少活跃链接.有没有执行时间过长的链接等.数据库的各种异常也能通过链接情况间接反应出来,特别是数据库出现死锁或严重卡顿 ...