Android集成信鸽推送(华为通道)之坑
公司App之前用的是腾讯信鸽推送【V3.2.2之前版本】
前不久信鸽新增加了华为小米魅族厂商通道【V3.2.2之前版本】,然后就赶紧升级添加华为小米魅族厂商通道,提高推送成功率。
首先按照流程开始准备工作
开始调试工作
- 单独使用信鸽推送:打开APP消息透正常/杀死APP后还是也正常收不到消息,走短息通道了(以前就是这个鬼样子)
- 首先是用华为手机在测试服务器上鼓捣了一下不行;现【华为系统推送渠道】需要
打包apk
才可以 - 于是打包apk;直接登录账号,注册成功一切和顺利。在信鸽推送平台上按账号推送消息透传、推送栏都是秒到,感觉这样信鸽推送集成华为通道就ok啦
出问题啦!
- 初步测试ok后,换了个账号再试;在信鸽推送平台上无论是消息透传还是通知栏,apk打开还是杀死,
推送就是收不到
; - 打开log发现我切换账号以后日志就是这样子(华为通道必须打包才行,没法debug):
在信鸽开发文档【客户端返回码】中提示:
10002
:正在执行注册操作时,又有一个注册操作到来,则回调此错误码;
初步定位
:每次账号退出时,调用信鸽解注册失败
,App还注册状态,再次登录就信鸽重复注册导致1002- 于是卸载apk【解注册】,重新安装登陆,推送,一切正常;退出再次登录又是10002,这样确定是退出时解注册的代码问题了;
- 信鸽代码前任Android集成的,都没有熟悉代码:
信鸽V3.2.2由于集成厂商通道
,信鸽部分SKD中API做出修改,而且在V3.2.2失效
- 修改
注册API
和解注册API
再在信鸽推送官网全部正常,本想华为通道总可以OK了吧。 - 很快又发现在
公司服务端
推送的消息华为手机收不到,但是是信鸽官网
推送能收到,那应该是服务端
代码问题
的不是Android端的问题吧 - 服务端开发检查后说他那代码没问题,他在
信鸽SDK
和信鸽官网一致
,而且服务端推送返回结果码是:0
,问题就应该是在Android端
,服务端都是技术大牛他们那么一说,结果问题回到Android端了 - 折腾了很久没有搞定,最后之前Android开发[转JavaEE服务端],他说自己搞个
服务端信鸽demo
试一下不就知道了嘛,我是半路出家只会点Android搞了很久才搞出个Java的demo,结果demo所有推送华为手机秒到
,确定是服务端代码的问题 - 结果服务端的大佬发现问题是服务端
SDK没有升级
,之前用pythonV1.1.8版本SDK
,现在信鸽官网
pythoySDK还是V1.1.8
,但是下载解压后发现里面的SDK版本变成V1.1.8.3
了;坑呀 - 最后一个比较折腾的是:华为推送通道收到
透传消息
时,会拉起App的(例如:微信QQ)并且提示收到消息,但我App没有拉活,最后才发现是华为有个“自启管理”
只有开启App的自启权限
在收到透传消息会拉起App【微信QQ钉钉之类在华为应用商店前100
的可以联系华为在系统中默认开启
的自启权限】
总结
- 信鸽集成华为推送中遇到下面几个坑 ,小伙伴留心啦:
- 测试华为通道时
apk必须打包
;有点像集成微信支付需要带正式的签名之类、- 信鸽旧版升级的在
V3.2.2
中之前的部分api
已经失效
需要注意【尤其是注册和解注册
】;服务端SDK升级
需留心,以Python服务端SDK
为例:之前SDK是V1.1.8
,但已经升级后SDK
在官网写的还是V1.1.8
,下载解压才发现已经升级为V1.1.8.3
;据说连个升级说明都没有,信鸽团队就是这么自信;- 还有是在信鸽的SDK消息透传
onTextMessage
(Context context,XGPushTextMessage
message)的XGPushTextMessage 中有个customContent
对content作为补充的字段,但是在华为推送
透传中只有title
和content
字段,结果就是在V3.2.2SDK中信鸽团队无情将customContent字段抛弃
了 ,如果有使用该字段的小伙伴要及时修改
最后就修改不熟悉的代码先仔细看看一遍代码看一遍文档了,不然小心事倍功半了*