准备工作

1.申请推送服务需要在oppo官网上架自己的app(比较蛋疼),需要一些资料,上架以后app评级为A/B的应用方可申请推送服务,获取到app_key和app_secret。

2.oppo官网下载sdk包,api文档,将jar包引入到自己的项目即可,sdk内部已经维护每次请求所需的auth_token(有效期默认1天),所以不需要开发者自己维护。

测试代码块

/*** oppo推送测试类* */
public class Oppo {private static final String APP_KEY = "APP_KEY";private static final String APP_SECRET = "APP_SECRET";/*** 通知栏消息tile*/private static final String TITLE = "通知栏消息tile";/*** 通知栏消息内容*/private static final String CONTENT = "通知栏消息内容";public static void main(String[] args) {// 单推unicastNotification("regId");// 群推List<String> regIds = new ArrayList<String>();regIds.add("regId1");regIds.add("regId2");unicastBatchNotification(regIds);// 广播(多个用;号隔开)broadcastNotification("regId1;regId2;regId3");}/*** 创建通知栏消息体* * @return*/private static Notification getNotification() {Notification notification = new Notification();/*** 以下参数必填项*/notification.setTitle(TITLE);notification.setContent(CONTENT);/*** 以下参数非必填项, 如果需要使用可以参考OPPO push服务端api文档进行设置*/// subTitle - 子标题 设置在通知栏展示的通知栏标题, 【非必填,字数限制1~10,中英文均以一个计算】notification.setSubTitle("sub tile");// App开发者自定义消息Id,OPPO推送平台根据此ID做去重处理,对于广播推送相同appMessageId只会保存一次,对于单推相同appMessageId只会推送一次notification.setAppMessageId("test");// 应用接收消息到达回执的回调URL,字数限制200以内,中英文均以一个计算notification.setCallBackUrl("http://www.test.com");// App开发者自定义回执参数,字数限制50以内,中英文均以一个计算notification.setCallBackParameter("");// 点击动作类型0,启动应用;1,打开应用内页(activity的intent// action);2,打开网页;4,打开应用内页(activity);【非必填,默认值为0】;5,Intent scheme URLnotification.setClickActionType(4);// 应用内页地址【click_action_type为1或4时必填,长度500】notification.setClickActionActivity("com.coloros.push.demo.component.InternalActivity");// 网页地址【click_action_type为2必填,长度500】notification.setClickActionUrl("http://www.test.com");// 动作参数,打开应用内页或网页时传递给应用或网页【JSON格式,非必填】,字符数不能超过4K,示例:{"key1":"value1","key2":"value2"}notification.setActionParameters("{\"key1\":\"value1\",\"key2\":\"value2\"}");// 展示类型 (0, “即时”),(1, “定时”)notification.setShowTimeType(1);// 定时展示开始时间(根据time_zone转换成当地时间),时间的毫秒数notification.setShowStartTime(System.currentTimeMillis() + 1000 * 60 * 3);// 定时展示结束时间(根据time_zone转换成当地时间),时间的毫秒数notification.setShowEndTime(System.currentTimeMillis() + 1000 * 60 * 5);// 是否进离线消息,【非必填,默认为True】notification.setOffLine(true);// 离线消息的存活时间(time_to_live) (单位:秒), 【off_line值为true时,必填,最长3天】notification.setOffLineTtl(24 * 3600);// 时区,默认值:(GMT+08:00)北京,香港,新加坡notification.setTimeZone("GMT+08:00");// 0:不限联网方式, 1:仅wifi推送notification.setNetworkType(0);return notification;}/*** 发送单推通知栏消息*/public static void unicastNotification(String regId) {try {Sender sender = new Sender(APP_KEY, APP_SECRET);// 创建通知栏消息体Notification notification = getNotification();// 创建发送对象Target target = Target.build(regId);// 发送单推消息Result result = sender.unicastNotification(notification, target);// 获取http请求状态码System.out.println(result.getStatusCode());// 获取平台返回码System.out.println(result.getReturnCode());// 获取平台返回的messageIdSystem.out.println(result.getMessageId());} catch (Exception e) {e.printStackTrace();}}/*** 发送批量单推通知栏消息* * @param regIds*            需要推送的regId*/public static void unicastBatchNotification(List<String> regIds) {try {Sender sender = new Sender(APP_KEY, APP_SECRET);Map<Target, Notification> batch = new HashMap<Target, Notification>();// batch最大为1000for (String regId : regIds) {batch.put(Target.build(regId), getNotification());}// 发送批量单推消息Result result_unicast = sender.unicastBatchNotification(batch);// 获取http请求状态码System.out.println(result_unicast.getStatusCode());// 获取平台返回码System.out.println(result_unicast.getReturnCode());List<Result.UnicastBatchResult> batchResult = result_unicast.getUnicastBatchResults(); // 批量单推结果for (Result.UnicastBatchResult record : batchResult) {record.getErrorCode();record.getErrorMessage();record.getMessageId();record.getTargetValue();}} catch (Exception e) {e.printStackTrace();}}/*** 发送广播消息*/public static void broadcastNotification(String regIds) {try {Sender sender = new Sender(APP_KEY, APP_SECRET);// 创建通知栏消息体Notification broadNotification = getNotification();// 发送保存消息体请求Result saveResult = sender.saveNotification(broadNotification);// 获取http请求状态码System.out.println(saveResult.getStatusCode());// 获取平台返回码System.out.println(saveResult.getReturnCode());// 获取messageIdString messageId = saveResult.getMessageId();// 创建广播目标Target target = new Target();target.setTargetValue(regIds);// 发送广播消息Result broadResult = sender.broadcastNotification(messageId, target);// 获取广播taskIdbroadResult.getTaskId();List<Result.BroadcastErrorResult> errorList = broadResult.getBroadcastErrorResults();if (errorList.size() > 0) { // 如果大小为0,代表所有目标发送成功for (Result.BroadcastErrorResult error : errorList) {error.getErrorCode(); // 错误码error.getTargetValue(); // 目标}}} catch (Exception e) {e.printStackTrace();}}
}

java集成oppo推送sdk相关推荐

  1. java集成vivo推送sdk

    测试代码块 /*** vivo推送测试类* */ public class Vivo {public static final String ALIAS = "ALIAS";pub ...

  2. Android 集成华为推送,集成小米推送,集成OPPO推送,集成vivo推送

    最近有时间在我们的应用中集成了华为,小米,OPPO,vivo四大平台的推送,一切顺利. 这里做一个记录, 开撸: 一.华为推送 1.下载HMS Agent套件,解压如下: 找到GetHMSAgent_ ...

  3. oppo连续点击android版本,Android集成OPPO推送

    前置步骤: 1.使用OPPO企业开发者帐号,登陆OPPO开放平台,在"管理中心-应用服务平台-移动应用列表-选择应用-开发服务-推送服务"中完成OPPO PUSH权限申请 2.Op ...

  4. java集成华为推送

    集成华为推送 这类推送一般官方文档都比较详细,如果想要更加详细的了解建议查看官方文档. 官方文档地址:https://developer.huawei.com/consumer/cn/service/ ...

  5. uniapp轻松集成极光推送SDK(本地插件集成和离线打包两种)

    文章目录 一.先在uniapp的插件市场下载 二.本地插件配置(可在控制台看到打印信息,方便测试) 1.配置本地插件信息 1.1 厂商信息需要在各个厂商注册后,然后填写,用处为:可在离线时,发送通知. ...

  6. 集成阿里推送SDK中的问题:Duplicate zip entry UTDevice.class

    在集成阿里云移动推送过程中,混淆打包时报错: Warning:Exception while processing task java.io.IOException: Can't write [D:\ ...

  7. java 集成极光推送

    为什么需要推送 现在手机App中,每天都能收到大量的推送,这种推送是让用户了解app最新活动与消息,也是提醒用户参与活动并使用app的一个方法,在app中是必不可少的.公司开发app当然也需要使用一种 ...

  8. java集成极光推送实现Android的消息推送

    1.极光推送的思路就是,每一个app都有一个AppKey和Master Secret,这两个值是唯一的,也就是用来标识App的唯一信息,具体怎么获取,去看极光推送官网文档,这里就不在讲解.我们在极光开 ...

  9. java集成极光推送(仅仅极光注册Id字段发送)

    添加依赖 在pom.xml文件的<dependencies></dependencies>标签中,加入下面依赖,且刷新依赖 <!-- 使用极光推送的jar包 --> ...

最新文章

  1. Android中 TextView的使用
  2. mybatis 配置文件中set丢失逗号
  3. c++创建单级目录 多级目录,判断是否存在
  4. 百度网盘javascript加速视频播放速度
  5. hibernate教程--快速入门(增删改查)
  6. keil c语言表用什么数据类型,面向51单片机的Keil uVision4基本数据类型简介
  7. TFT_LCD液晶屏驱动设计与验证
  8. jquery datatable搜索框添加按钮,改变keypress搜索为点击按钮搜索
  9. java学生成绩管理系统
  10. 高等数学和数学分析教材推荐及其学习方法浅谈
  11. oracle adpatch 回退,Oracle EBS施用adpatch工具打patch过程
  12. 欧奈尔RPS曲线的编制方法及常见问题解答
  13. 就计算机应用领域而言航天器,婴幼儿耳道长耵聍,应该用()工具取出A.耳挖勺B.火柴棍C.棉签D.卡子...
  14. Google商店应用上架注意事项
  15. 已知经纬度自动在地图上标点
  16. Web Scraper爬虫
  17. 深入理解风控中的 KS 原理
  18. java8 两个时间比较
  19. Spring Data MongoDB 多个条件或查询
  20. 杨辉三角 帕斯卡三角形(C语言)

热门文章

  1. 光度测量类有哪些最新发表的毕业论文呢?
  2. 操作系统复试面试问题
  3. 深度学习:学习路线与规划
  4. 基于单片机蓄电池充放电检测系统设计-毕设资料
  5. ActiveMQ开发简明教程
  6. 汇编语言实现七段数码管显示控制实验
  7. npm命令配置淘宝镜像
  8. 关于validate_data_dir的一些理解
  9. 网络安全实验室---解密关
  10. bat批处理脚本入门