最近几个项目都有app端,不可避免的存在消息推送的业务,现在就记录一下java端使用友盟(umeng)第三方完成消息推送功能,需要配合IOS和Android端开发。
参考友盟官网U-Push API集成文档
一 : Java端配置友盟参数
需要Android和IOS相关的key和aliasType (别名,即Android和IOS在友盟上使用的注册信息,比如,aliasType是account,那么友盟会根据账户推送,也可以是groupId,可以根据组织为单位推送,这用就完成了群推送的管理,Android和IOS的别名上限是10个)
参数的设置有两种方式 :
① :在application.yml文件中配置(单推) , 在工具类上调用参数方式为 @ConfigurationProperties(prefix ="umKeys")
# 友盟key参数
umKeys:
# android 相关key
androidAppkey: 5b601612f43e4861ff0000db
androidAppMasterSecret: 0dps2sobzavn3kfv3wrnthlbr5ftnbkd
# ios 相关key
iosAppkey: 5b6018deb27b0a2c67000255
iosAppMasterSecret: 4b4huy4ohwedlqrvk4wevqhpiay2zy75
# 别名
aliasType: account
② : 在umKeys.properties 上配置 (群推), 在工具类上调用参数方式为 @PropertySource({"classpath:config/${spring.profiles.active}/umKeys.properties" })
# android 相关key
umKeys.androidAppkey=5b601612f43e4861ff0000db
umKeys.androidAppMasterSecret=0dps2sobzavn3kfv3wrnthlbr5ftnbkd
# ios 相关key
umKeys.iosAppkey=5c7896a00cafb22fb7001867
umKeys.iosAppMasterSecret=fp01stg7zsxmdtxldbhqq2gatt25eqoh
# 别名
umKeys.aliasType=sysGroupId
二 : 编写工具类
代码不好贴,直接截图吧
工具类代码1 工具类代码2查看工具类可以知道,我们需要去将需要的字段赋值,根据项目的具体情况选择,上述的工具类属于共同类型,有特殊需求的推送可以参考U-Push API集成文档
使用*.yml文件配置参数的获取方式
使用*.yml文件配置参数的获取方式三 : 工具类(PushClient)源码分析
PushClient源码你会发现,我们在调用send方法的时候,默认返回的是true,即不考虑返回值的情况下直接使用send方法即可,当我们需要对发送结果进行获取时,需要自己重写一下源码内容
四 : Java推送
① : PushClientpushClient
private PushClientpushClient =new PushClient();
② : 无需考虑返回值的调用
无需考虑返回值的调用注意 : 这里的工具类参数和上述的不同
③ :需要考虑返回值的调用
需要考虑返回值的调用源码copy出来,进行修改,使其返回参数
修改源码方法五 :补充为什么会使用两种友盟参数设置
起初项目环境是常用的Spring MVC ,Spring Boot , Mybatis Plus 架构,使用的是*.yml文件配置参数,可以调用到数据。后面我们改用了自己公司封装的架构,然后是Spring Cloud 基于Spring Boot的微服务架构。导致使用*.yml文件配置参数显示spring boot configuration annotation processor not found in classpath,添加依赖无法生效
类路径中找不到Spring引导配置注释处理器网上说添加依赖
<!-- 配置文件自动映射 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
但是在spring cloud管理的项目中添加之后,显示包unknow
unknow所以才换了在umKeys.properties上进行配置,可以访问。原因还在思考,了解原因后会过来填充
网友评论