android推送历来的诟病就不用多说了,这么多年过去了还是开发者的一大头疼之事,虽说有第三方推送平台,但是如果要实现离线推送,也就是应用进程被销毁后,仍能收到推送,这一块的话目前只能充钱,就可以使用到个推为我们集成了各个厂商的推送渠道这个服务,提高离线通知到达率,本文也是讲的个推多厂商渠道接入碰到的一些问题,与大家分享。
1 文档需要一字一句的看
首先是申请各大平台的渠道参数,包括key、secret等,其中华为需要指纹证书和生成的json文件,注意华为填写SHA5值一定要与App一致,否则会报如下错误
get hms token failed:6003: certificate fingerprint error
2.注意包名是否正确
可能你这时候是在测试环境进行开发,所以包名有可能会有后缀,比如.debug,这样就造成了包名与你在个推上配置的不一样,同样也会收不到推送
3.部分厂商机型需要特殊配置
比如oppo需要在点击通知打开的目标页面对应的manifest添加action,当然export = true也是不可少的
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.oppopush" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
配置完毕后,进入测试,这里还会碰到各个厂商系统的差异导致的一些问题,也希望抛转引玉,希望有解决方案的小伙伴分享下:
- 离线通知属于系统级别的通知通过厂商渠道下发,这时候小米和OPPO是没办法通过调用cancel或者cancelAll的Android SDK方法来清除通知,这点目前没找到原因和解决办法
- vivo在notification channel默认关闭,但是我们Android SDK并没有检测该开关的代码,所以目前也只能线下的用户引导进行开启,否则也是收不到通知
- oppo在点击一条离线通知后可以正常跳转,点击另一条就无法跳转,也已经在intent配置了lauchFlag,在oppo上依然无效。
以上差不多就是我这次接个推的问题总结,有问题可以评论处一起讨论。