集成极光推送后测试的时候可以接收到消息推送,打包后就接受不到了。极光推送最坑的一个地方就是免费版的容易出现消息堵塞,造成再测试中的app接收不到消息。集成的时候有多个地方需要更换包名。设置tag的时候取消tag可以传null但是有潜在的大坑。
集成方式就不说了。公司所有app都是集成的极光推送,集成方式都非常成熟了。
1. 集成极光推送后测试的时候可以接收到消息推送
原因是混淆后极光推送的一些类就不管用的需要在混洗文件中添加:
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
因为minifyEnabled true(minifyEnabled主要用来控制是否运行混淆的。true表示混淆);
dontwarn表示打包混淆的时候,消除极光的警告。
keep表示保持极光的一些类,不被混淆
2.我使用极光推送以来遇到了几次接收不到消息的情况,在排查自己代码没问题的时候联系下客服,问一下是不是免费通道堵塞了,免费通道是全国公用的一个服务器,来实现简单的消息通知没问题,极光推送免费通道1秒处理几万条消息,大于设定数字的话就会造成堵塞。
3.集成的时候在AndroidManifes文件中需要多处用到项目报名,特别是
<permission
android:name="com.******(包名).permission.JPUSH_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.carspass.permission.JPUSH_MESSAGE"/>
这是一个权限容易被忽略。
4.这是tag的要注意的地方
这里提供了两个同时设置别名和标签的同名方法:
public void setAliasAndTags(final String alias, Set<String> tags) {}
public void setAliasAndTags(final String alias, String tag) {}
不设置tag的话可以直接传null,但是传null的话,这两个重载的方法传的参数会一样,系统会不知道我们调的哪个方法。我就把第一个注释了,然后就自己给自己挖了个很大的坑。测试发现第一个方法Set<String>tags的位置传null,没问题。第二个String tag,传null,极光的接口回调回来走的6002,说tag的参数传的有问题。然后仔细一看,我相当于把一个null对象放到了Set<String>tags里,然后传给了极光。这里可以在原来基础上加个判空,然后再往Set里add。就跟第一种方法是一样的了。
技术总结:济宁远之航网络科技技术三部张茂瑞
All Rights Reserved © 2014-2018 鲁ICP备14000487号 | 营业执照 | 增值电信业务许可证 鲁B2-20190121 | 山东远之航信息技术有限公司 |