友盟推送_java后台集成和使用

最近应公司业务需求需要完善友盟推送,认真看了官方文档后其实很简单,只需要细心些,然后找个靠谱的移动端配合你接收很快就能推送成功。

友盟官方API地址:https://developer.umeng.com/docs/66632/detail/68343

1、了解常用推送模式和关键字选择对应业务的推送模式:

  • Appkey:应用唯一标识。友盟消息推送服务提供的appkey和友盟统计分析平台使用的同一套appkey。
  • App Master Secret:服务器秘钥,用于服务器端调用API请求时对发送内容做签名验证。
    Device Token:友盟消息推送服务对设备的唯一标识。Android的device_token是44位字符串,iOS的device_token是64位。
  • Alias:开发者自有账号,开发者可以在SDK中调用setAlias(alias, alias_type)接口将alias+alias_type与device_token做绑定,之后开发者就可以根据自有业务逻辑筛选出alias进行消息推送。
  • 单播(unicast):向指定的设备发送消息。
  • 列播(listcast):向指定的一批设备发送消息。
  • 广播(broadcast):向安装该App的所有设备发送消息。
  • 组播(groupcast)::向满足特定条件的设备集合发送消息,例如: “特定版本”、”特定地域”等。
  • 文件播(filecast):开发者将批量的device_token或者alias存放到文件,通过文件ID进行消息发送。
  • 自定义播(customizedcast):开发者通过自有的alias进行推送,可以针对单个或者一批alias进行推送,也可以将alias存放到文件进行发送。-

2、根据本次业务需求我选择了单播和自定义播两种模式,在官方API中各模式参数结构如下:

图中右侧目录是对应各推送模式下的参数释义,仔细看每个参数,然后和移动端商议好双方传送字段名。

3、清楚这些之后,可以动手了:

  • 1、集成官方sdk到后台(官方API底部下载,同上链接;或我的百度云盘: https://pan.baidu.com/s/1yBIJiOBGWXCioPrnogTOUA 提取码: g9yw)
  • 2、用sdk中的示例Demo运行测试集成结果
  • 3、开发对应业务模块
3.1 集成后的目录结构如下:

3.2 集成后运行Demo测试是否集成成功:
{"payload": {"aps": {"badge": 0,"alert": "测试标题","sound": "default"},"message": "{"result":{"arr0":[{"messageTitle":"测试标题","pushContent":"测试内容, ios推送"}]}}"},"appkey": "5843b2d398f4a9d2804001cf40","type": "unicast","production_mode": "false","device_tokens": "1842d612874fd0f8a15cfaf76ecf4b876c43482cfcd66a96f7cc68f93d3084","policy": {"start_time": "2018-10-28 12:23:23"}
}//  运行Demo.java 打印出发送内容如上:
//  这里需要注意appkey和appsecret是Android和IOS在UM官方注册提供的。
//  在外网环境移动端才可接收到推送。本地环境会提示IP不在服务器白名单,如下:{"ret":"FAIL","data":{"error_msg":"IP不在白名单中, 请到网站后台添加您的服务器IP或关闭IP白名单功能","error_code":"2054"}} Failed to send the notification!

4、以单播和自定义播为例附上我的代码:

// IOS单播
// IOS单播---需要用户deviceToken
/*** 使用的是sdk的IOSUnicast对象* deviceToken可使用测试机的token,移动端获取存入服务器数据库* object里面存放是IOS实际取的内容,其它参数是UM原定的可看业务而定,也可以和移动端自定义格式* 使用customizedcast.getPostBody()打印推送内容* /
public void ios() throws Exception{String appkey = "585b2d398f45354a9d2804001cf0";String appMasterSecret = "qjhlck6p4brfmn70adjof5434sxmr4ie0lie";    //IOS单播IOSUnicast unicast = new IOSUnicast(appkey, appMasterSecret);JSONObject result = new JSONObject();JSONObject custom = new JSONObject();JSONObject object = new JSONObject();JSONArray array = new JSONArray();//object.put("sound", "default");object.put("messageTitle", "IOS推送标题"); //IOS推送标题object.put("pushContent","推送的内容, ios推送");//推送内容array.put(object);result.put("arr0", array);custom.put("result", result);unicast.setDeviceToken("1842d612874fd0f8a1ecf76c2ddea82cfcd66a96f7cc68f93d3084");unicast.setAlert("IOS推送标题");unicast.setBadge(0);unicast.setStartTime("2018-10-28 12:23:23");unicast.setSound("default");unicast.setTestMode();unicast.setCustomizedField("message", custom.toString());System.out.println("==iosDeviceToken:"+unicast.getPostBody());client.send(unicast);
}
// android自定义播
//android自定义播
/*** 使用的是sdk的AndroidCustomizedcast对象* object里面存放是android实际取的内容,其它参数是UM原定的可看业务而定* setCustomField里面是android实际读取的,也可和移动端自定义数据结构* 使用customizedcast.getPostBody()打印推送的内容* 此处Alias = persionId || userId* /
public void android() throws Exception{String key = "585b2bd74543734be459bd001442";String secret = "yoknur0n2iuqw543qjjoegyikbkj4aksej2";//android自定义播AndroidCustomizedcast customizedcast = new AndroidCustomizedcast(key, secret);JSONObject result = new JSONObject();JSONObject custom = new JSONObject();JSONObject object = new JSONObject();JSONArray array = new JSONArray();object.put("sound", "todayTask");object.put("messageTitle", "测试推送标题"); //推送标题object.put("pushContent","测试推送的内容, android推送"); //推送内容array.put(object);result.put("arr0", array);custom.put("result", result);customizedcast.setCustomField(custom);customizedcast.setAlias("1815", "SINA_WEIBO"); // 此处Alias = persionId || userIdcustomizedcast.setTicker("测试推送标题");customizedcast.setTitle("测试推送标题");customizedcast.setText("测试推送的内容, android推送");customizedcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);customizedcast.setProductionMode();System.out.println("发送内容:"+customizedcast.getPostBody());client.send(customizedcast);}
// IOS自定义播
//IOS自定义播---同上Andriod自定义播
public void iosAlias() throws Exception{String appkey = "585b2d398f1ddd2804001cf0";String appMasterSecret = "qjhlck6p4br89jhn70adjofsxmr4ie0lie"; IOSCustomizedcast customizedcast = new IOSCustomizedcast(appkey, appMasterSecret);JSONObject result = new JSONObject();JSONObject custom = new JSONObject();JSONObject object = new JSONObject();JSONArray array = new JSONArray();//object.put("sound", "default");object.put("messageTitle", "测试推送标题"); //推送的标题object.put("pushContent","测试推送的内容, ios推送"); //推送的内容array.put(object);result.put("arr0", array);custom.put("result", result);customizedcast.setAlias("1815", "IOSAPP"); //此处Alias = persionId || userIdcustomizedcast.setAlert("测试推送标题");customizedcast.setDescription("customizedcast");customizedcast.setBadge(0);customizedcast.setStartTime("2018-10-28 12:23:23");customizedcast.setSound("default");customizedcast.setCustomizedField("message", custom.toString());customizedcast.setTestMode();System.out.println("==iosAlias:"+customizedcast.getPostBody());client.send(customizedcast);
}
// 以上三个示例可在单元测试中运行,查看结果如3.2所示;

5、注意点:

  • 1、UM相关的各参数如appkey、appsercet、deviceToken、alias,存取数据结构和参数名称等,要和移动端约定一致。
  • 2、自定义播使用要注意数据结构,参照官方API的附录所示数据结构,若业务需要也可自定义封装;
  • 3、只有在外网才可与移动端测试是否接收成功,本地会显示白名单错误;(为了测试方便我搭了简单的springboot项目与移动端联调)。

全篇原创纯手码,如有疑问,欢迎指导!

友盟推送_java后台集成和使用相关推荐

  1. 友盟推送 java_java 后台调用友盟推送 如何设置ios 的 title?

    查看官方友盟推送文档 文档的意思我一开始也没看懂,后来发现这里可能是这个意思:你可以传进来字符串或者json串,如果是字符串,UMeng那边就默认它是内容,如果是json串的话,格式要像它给的那样,U ...

  2. Android 集成友盟推送方案(1)

    我自己继承过FCM(国外app)百度云推送,阿里云推送,小米推送,华为推送,友盟推送,目前这几类推送方式.本文主讲友盟推送方式的集成步骤: 大家可以根据官网网址进行集成:官网如下: https://d ...

  3. Android集成友盟推送

    这几天一直在做Android 消息推送接入前的准备工作 特此在这里将自己在加载第三方推送时出现的问题以及详细的接入步骤进行记录,已免后者踩坑 目录 为什么选择友盟推送? 接入前的准备: 打开官方示例 ...

  4. 如何提高友盟推送的消息到达率

    无意间看到了友盟微信公众号的一篇推送,文章名字叫"你的消息到达率是多少?",这是一篇关于友盟推送的消息推文,大概说明了友盟推送消息送达到手机的过程中的有关影响因素. 然后总结出:提 ...

  5. android 友盟服务端推送给客户端,Android 友盟推送 厂商通道 接入Notes

    image 前言 本文章也是就在接入过程中遇到的一些小问题做个记录,希望对遇到问题的开发者有些许帮助. 接入的SDK 版本为:Push SDK 6.1.0 官方文档 目前,友盟推送仅支持以下五家厂商的 ...

  6. Android集成友盟推送最详细介绍

    前言 如今大部分应用都会涉及到推送,正好最近的项目推送是我在搞,今天就分享一下我的使用过程. 集成方式 关于友盟推送的集成方式,文档已经介绍的很详细了,我就不在此多做解释. 友盟推送完整集成过程 完全 ...

  7. 友盟推送集成的常见问题

    友盟消息推送注意事项 SDK集成:http://dev.umeng.com/push/android/integration 常见问题:http://bbs.umeng.com/thread-5911 ...

  8. Android 友盟统计 友盟推送 友盟分享快速集成

    一.友盟统计 1.首先需要到友盟官网 http://mobile.umeng.com/apps注册并且添加新应用,获得Appkey 2.导入SDK,新版SDK支持Android 6.0,http:// ...

  9. php 友盟推送角标,android集成友盟推送实现离线在线推送及桌面图标角标设置

    本人亲测有效,有问题欢迎评论,互相学习 1.集成友盟推送-根据友盟文档集成即可实现在线推送 2.集成后想要实现点击跳转到指定页面,那么就要根据后台返回的数据进行跳转 (1)在线推送-在applicat ...

最新文章

  1. 最详细的NLP开源数据集分享--包含342个公开数据集
  2. android使组件居中,Android图文居中显示控件使用方法详解
  3. css、js控制html标签的属性和内容
  4. Jquery ajax 学习笔记
  5. SAP CRM 订单抬头文本的可编辑性讨论
  6. 浅谈html的语义化和一些简单优化,html标签语义化
  7. Android中ImageView的旋转与缩放
  8. Libhybris之Glibc和Bionic共存时的TLS问题(四)
  9. 计算机及服务器硬件组成结合企业运维场景知识
  10. Unicode与GBK互转
  11. 15分钟搭建自己的博客
  12. 前端工程师薪资差距可达7.3倍!4月程序员薪资统计出炉,速看!
  13. ftp下出现“当前的安全设置不允许从该位置下载文件”提示
  14. ps 套索工具抠图实例
  15. win10 开机无法自动连接或重启才能连接WIFI的简单解决方法/2022.03
  16. kettle连接不上es7_kettle常见问题解决
  17. 北大AI公开课第五课--深度学习处理器by寒武纪陈云霁
  18. 怎么重新安装服务器系统,重新安装服务器操作系统
  19. wifi吞吐量测试环境搭建和mifi的wifi吞吐量测试
  20. 【Linux】基本系统维护命令

热门文章

  1. android 输入法 sd卡,关于安卓手机内置或外置SD卡中各文件夹的名称和作用
  2. MySQL—关联查询与子查询(从小白到大牛)
  3. MT7621芯片性能,MT7621路由器参数介绍
  4. Excel在统计分析中的应用—第五章—统计指数-Part5- 综合指数(费雪指数)
  5. [刷题]2017百度之星资格赛 - 度度熊与邪恶大魔王
  6. Flink 网络流控和反压剖析详解
  7. sqlmap之sql注入(一)
  8. mv150us无线网卡驱动linux,水星MW150US安装Linux驱动
  9. 用HTML+CSS+JS做一个漂亮的个人网页
  10. LeetCode题解(1647):字符频次唯一的最小删除次数(Python)