集成华为推送

这类推送一般官方文档都比较详细,如果想要更加详细的了解建议查看官方文档。

官方文档地址:https://developer.huawei.com/consumer/cn/service/hms/pushservice.html

华为推送服务在开发前需要些准备 1.注册认证成为开发者

2.配置应用签名

3.创建产品和应用

4.开通推送服务

这些步骤按照官方文档一步步来就行,我这边是直接拿到了开发所需要的APPID,APP SECRET,PACKAGE NAME

注册和准备工作完成后就可以开始进行后台的代码编写了

第一步 应用服务器获取AccessToken

想要访问华为的服务接口必须需要一个Token,我们第一步就是获取这个Token。

    private static String appSecret = "appSecret";//用户在华为开发者联盟申请Push服务获取的服务参数private static  String appId = "12345678";//用户在华为开发者联盟申请Push服务获取的服务参数private static  String tokenUrl = "https://login.cloud.huawei.com/oauth2/v2/token"; //获取认证Token的URLprivate static  String apiUrl = "https://api.push.hicloud.com/pushsend.do"; //应用级消息下发APIprivate static  String accessToken;//下发通知消息的认证Tokenprivate static  long tokenExpiredTime;  //accessToken的过期时间

首先定义好需要的参数,在实际开发中这些参数可以存放在数据库,也可以存放在配置文件中,看个人需求。

接下来就是获取Token

private void refreshToken() {try {String msgBody = MessageFormat.format("grant_type=client_credentials&client_secret={0}&client_id={1}", URLEncoder.encode(appSecret, "UTF-8"), appId);String response = HttpUtil.post(tokenUrl, msgBody);JSONObject obj = JSONObject.parseObject(response);accessToken = obj.getString(“access_token”);tokenExpiredTime = System.currentTimeMillis()+(obj.getLong(“expires_in”)-5 * 60)*1000;} catch (Exception e) {LOGGER.error("HvPush -- >> 认证Token获取失败!原因:e = {}", ExceptionUtil.getMessage(e));}}

获取到了访问Token我们就可以开始推送代码的编写了。

第二步 应用服务器发送PUSH消息

通过前面的代码我们获取到了AccessToken,Token的存放按照不同的需求可以放在redis或者数据库。

在发送消息之前首先先验证AccessToken是否已经过期

if(tokenExpiredTime <=System.currentTimeMillis()){refreshToken();}

接下来进行消息体的封装

    // 封装推送消息body,用于显示通知栏消息显示的标题和内容JSONObject body = new JSONObject();//仅通知栏消息需要设置标题和内容,透传消息key和value为用户自定义body.put("title","Push message title");//消息标题body.put("content","Push message content");//消息内容体// 封装消息点击动作的参数,“com.huawei.hms.hmsdemo”为推送消息中需要打开的应用APK包名。请根据实际包名来修改。JSONObject param = new JSONObject(); param.put("appPkgName","com.huawei.hms.hmsdemo");//定义需要打开的appPkgName,这个参数在推送服务管理页面可以看到// 封装消息点击动作,用于定义通知栏点击行为JSONObject action = new JSONObject();action.put("type",3);//类型3为打开APP,其他行为请参考接口文档设置action.put("param",param);//消息点击动作参数// type为1时可以自定义行为,自定义行为需要app开发者事先给号参数// param.put("intent", "自定义行为,动作需要app开发者编辑好给你");// 封装消息类型,用于定义消息类型,区分是通知栏消息还是透传消息。JSONObject msg = new JSONObject();msg.put("type",3);//3: 通知栏消息,异步透传消息请根据接口文档设置msg.put("action",action);//消息点击动作msg.put("body",body);//通知栏消息body内容示例代码// 封装扩展消息,扩展消息中可以设置biTag用于消息打点,也可以携带customize参数用于触发通知栏点击事件的onEvent回调。JSONObject ext = new JSONObject();//扩展信息,含BI消息统计,特定展示风格,消息折叠。ext.put("biTag","Trump");//设置消息标签,如果带了这个标签,会在回执中推送给CP用于检测某种类型消息的到达率和状态JSONObject temp = new JSONObject();temp.put("season","Spring");temp.put("weather","raining");JSONArray customize = new JSONArray();customize.add(temp);ext.put("customize",customize);// ext扩展信息这个参数我并没理解到到底是干嘛的 ,在实际的开发中我只使用了ext.put("biTag", "Trump"); 并没有进行customize参数的携带// 最后将以上信息全部封装整个消息体JSONObject hps = new JSONObject();//华为PUSH消息总结构体hps.put("msg",msg);hps.put("ext",ext);JSONObject payload = new JSONObject();payload.put("hps",hps);

消息体参数详细文档地址:https://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush_agent.html?page=hmssdk_huaweipush_api_reference_agent_s2

消息体封装完成后就可以开始发送推送消息了。

    // 创建一个数组json用于存放需要推送的设备id,一般是由前段传过来,或者数据库查询出来JSONArray deviceTokens = new JSONArray();//目标设备TokendeviceTokens.add(regId);// 封装整个http消息并发送String postBody = MessageFormat.format("access_token={0}&nsp_svc={1}&nsp_ts={2}&device_token_list={3}&payload={4}",URLEncoder.encode(accessToken,"UTF-8"),URLEncoder.encode("openpush.message.api.send","UTF-8"),URLEncoder.encode(String.valueOf(System.currentTimeMillis() / 1000),"UTF-8"),URLEncoder.encode(deviceTokens.toString(),"UTF-8"),URLEncoder.encode(payload.toString(),"UTF-8"));String postUrl = apiUrl + "?nsp_ctx=" + URLEncoder.encode("{\"ver\":\"1\", \"appId\":\"" + appId + "\"}", "UTF-8");// 发送消息 这里我用的是hutool的HttpUtil工具类发的post请求String post = HttpUtil.post(postUrl, postBody);LOGGER.info("华为推送 -- >> 返回结果:" + post);

到此推送完成,返回结果与错误代码对应文档地址:https://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush_agent.html?page=hmssdk_huaweipush_api_reference_agent_s2

转载于:https://my.oschina.net/u/4068190/blog/3070929

java集成华为推送相关推荐

  1. java集成_java集成华为推送

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

  2. Android集成华为推送功能详细

    1.前言 Android集成推送功能也算是有好几个SDK了,包括极光.个推.小米.百度云推送.但是真心感觉华为的文档写的太差,封装的也不好,别的开发文档看一两遍就能按照文档集成成功,而华为仔细看了几遍 ...

  3. Android - 集成华为推送

    Android ~ 集成华为推送 功能流程如下图所示: 开发流程 一.配置AppGallery Connect 1.注册成为开发者 注册 实名认证 2.创建应用 创建项目 在项目下添加应用 3.生成签 ...

  4. java对接华为推送服务_华为HMS Core 4.0版本即将来袭:包含新推送服务

    据官方消息,在12月27日的HUAWEI Developer Groups(简称HDG)大连活动上,华为消费者云服务HMS运营经理透露HMS Core 4.0版本即将上线,由原来的14项增加至24项核 ...

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

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

  6. Android集成华为推送教程

    前言 目前Android应用在后台杀死进程之后,就收不到通知了,想要接收消息推送,需要集成各个厂商的推送SDK,本次讲解华为集成最新教程 1.配置AppGallery Connect 1)注册成为开发 ...

  7. 如何集成华为推送的详细步骤流程

    1.登录进入华为开发者平台 2.下载导入agconnect-services.json 进入推送服务,创建我的项目并添加应用,应用名称和包名与Android Studio中的保持一致,确认之后下载ag ...

  8. java 集成极光推送

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

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

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

最新文章

  1. python写彩票抓取_Python|爬取彩票数据
  2. 密钥方式登录linux,Linux的密钥对的方式登录方式
  3. 微软官方pe工具_很好却不够香!微软官方免费数据恢复工具体验
  4. jquery-入门-基本使用-选择器-转移
  5. shell 脚本学习及troubleshooting
  6. 好用的shell_Linux系统安全 | Linux中的Shell和Bash
  7. 基于机器视觉的磁头飞机载划痕检测
  8. Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转
  9. chrome浏览器的跨域设置
  10. 学Java看这就完事了!javasocket编程例子
  11. 使用python调用浏览器实现自动转发微博
  12. 我的世界电脑锁屏.html,怎么设置电脑锁屏
  13. 题目 1040: 实数的打印
  14. 【C语言细节】计算自然对数的底 e遇坑
  15. 二手市场回收基于微信小程序和app两种应用开发uniapp
  16. Skimming, Locating, then Perusing: A Human-Like Framework for Natural Language Video Localization
  17. 深度解析FPS游戏外挂+解决方案
  18. 区块链难理解?这里有一篇初学者指南
  19. 我所关注,推荐的公众号---软件那些事儿
  20. 阿里云封禁大量“涉诈”网站

热门文章

  1. 保研边缘人如何自救(经管学姐)?
  2. Python编程语句
  3. 常用网址-2023整理
  4. 2022年11月华南师范大学自考本科-计算机信息管理课程实验—《数据库系统原理》实践题目
  5. 大话世界格局:春秋五霸与战国七雄
  6. Arduino编译Marlin1.1出现 fatal error: U8glib.h: No such file or directory如何解决
  7. Jetson TX2实现EfficientDet推理加速(一)
  8. 电信计费模拟系统c语言,电信计费模拟实现(C语言).doc
  9. python大一题库西农_西农植物学试题
  10. Python xlrd 读取Excel数字 数字丢失精度 小数位太长 求大神的解决方法(已解决)