一. 单播推送(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. 2021最新版Dubbo-admin+Zookeeper安装教程

    安装程序包 这是写教程时收集好的文件,可直接点击下载,也可以跟着步骤自行下载:https://hanzhe.lanzous.com/ihna9jzcsze Zookeeper下载地址,任选其一点击下载 ...

  2. MyBatisPlus入门学习

    目录 MyBatisPlus 概述 快速入门 配置日志输出 CRUD拓展 插入 主键生成策略 更新操作 自动填充 乐观锁 查询操作 分页查询 删除操作 逻辑删除 性能分析插件 条件构造器 代码自动生成 ...

  3. 07- HTTP协议详解及Fiddler抓包

    HTTP协议简介-超文本传输协议 HTTP协议是请求/响应协议:客户端发送请求到服务器,服务器响应该请求.当前版本为1.1版本. HTTP协议特点 1.简单快速:客户向服务器请求服务时,只需传送请求方 ...

  4. Python学习笔记-StatsModels 统计回归(3)模型数据的准备

    1.读取数据文件 回归分析问题所用的数据都是保存在数据文件中的,首先就要从数据文件读取数据. 数据文件的格式很多,最常用的是 .csv,.xls 和 .txt 文件,以及 sql 数据库文件的读取 . ...

  5. Day003 +和字符串使用的问题

    先看一段代码 int a=10; int b=20; System.out.println(""+a+b); System.out.println(a+b+"" ...

  6. Sublime text3 的破解

    下载sublimeText3的安装包并安装(已经安装的可以忽略) 在hosts文件中添加:127.0.0.1 license.sublimehq.com(hosts文件地址:C:\Windows\Sy ...

  7. android之布局优化

    android中提供了<include />.<merge />.<ViewStub />三种优化布局. 1.<include /> <inclu ...

  8. PhpStorm 配置本地文件自动上传至服务器

    目的:本地文件夹下的文件实时同步至指定服务器的文件夹,减少代码移植的成本和风险 添加一个SFTP连接 Tools - Deployment - Browse Remote Host 配置连接参数 Co ...

  9. phpstorm 实现分屏显示

  10. 【tee小白的第一篇随笔】keystone代码略读

    武大信安在读,最近在自学Risc-v架构的可信执行环境. (实验报告多半是为了交差.临时起意写写博客,分享一些自己读代码的心得理解.) 本篇内容由队和我友总结而成,如有错误欢迎指正交流. keysto ...