集成友盟推送,华为(离线)厂商通道踩坑总结

4,802 阅读4分钟

前言

用户反馈说,在用app的时候能够接收到通知,关掉app后就收不到了,打开后推了一堆消息,问题☺☺,能不能在没有打开App的时候也能收到消息。那就得用到各个厂商通道推送,项目中用了友盟推送,好处是不用挨个看厂商的推送文档,只要去厂商推送获取要的值就行了,其它交给友盟就行了,虽然看似挺简单的,不过中间也踩了不少坑,在此记录下。

本篇就不从最开始集成了,看着官方文档,一步一步来,很快就能集成好。

友盟推送官网地址:developer.umeng.com/docs/67966/…

先通过友盟网页测试消息

这个跑通没问题了,再与后台调试,可以省不少时间.

测试消息如下图:image.png 没有测试设备的先添加设备,点击右上角新建测试设备,把获取到的 deviceToken填进去。deviceToken是从如下图获取到的: image.png,然后就可以测试消息了,要选择deviceToken用户

image.png 想着应该很快就能收到通知了结果,没有收到,尴尬,那就看看什么原因吧,先看下AS日志下有什么报错的没,果然发现有一段日志报红了。。。

移动端排查

  1. 华为日志报错 看了日志报红,记录着华为相关日志,可以看到日志报了API异常,错误码为6003

image.png 这时我们就要去华为推送官网查看错误码对应的信息了,常见错误码地址是:developer.huawei.com/consumer/cn…

image.png SHA256证书指纹不一致?,然后重新获取了下SHA256,发现最后一个字母不一样,然后替换成最新获取的,得过一分钟左右才生效。再次打开app,发现获取token成功了,image.png 获取SHA256,通过命令行进入到jdk所在的bin目录下,输入keytool -list -v -keystore 具体路径 image.png 2. 华为 回执开关个别没开,服务没开

集成华为厂商通道SDK后,需要在华为后台配置消息回执才可以正常取到通过华为通道下发消息的收到数等数据。下图这两个一定要开通,当时忘了开。具体看友盟官方文档----华为——设置消息回执:developer.umeng.com/docs/67966/…

华为推送服务地址:developer.huawei.com/consumer/cn… image.png 华为AppGallery Connect上开通API服务地址: developer.huawei.com/consumer/cn…

image.png

  1. 打印日志看到消息推送过来了,但么有在通知栏显示(前提是通知栏也是开启状态) 然后在友盟网页版自测了下推送,发现在AS日志里可以看到推送过来的消息,但在通知栏没有展示出来,纳尼?

image.png 排查后,才发现,友盟相关的给封装成了一个lib包,因为集成友盟时,需要添加如下图文件,

image.png

但是,友盟查找资源的时候默认从主包名下找,所以找不到此资源,解放方法就是:设置资源包名方法

image.png

PushAgent.getInstance(application).resourcePackageName = "资源对应的包名"

设置完成后,通知栏消息收到了(是离线状态哦,App杀掉后)

image.png

image.png

自测完之后,那就正式和后台调试了,尴尬,后台推了一条,没有收到,细心的同事(点赞)发现API文档里没有这两个字段,怀疑是后台没有加,因为通过友盟网页发送消息的时候,每次的json串里都有这两个字段,如下图:

image.png

后端排查

1 **调友盟api,发送消息没有带mi_activity,mipush字段或者调用channel_activity"

image.png 于是提了工单,那边人说:

您好,请参考下文档developer.umeng.com/docs/67966/… 。最新的方法调用channel_activity就可以了。替代mipush、mi_activity参数的,如果写了mipush、mi_activity参数可不设置该参数

image.png

天大的坑!!!加上后,还是离线状态下收不到。

2字段display_type引起的问题

后台同事发现调API的时候,display_type传的是"message",于是改成了"notification",成功推送。

image.png 注意当改成了"notification"后,返回的消息体也不一样了,记得改下。

总结处理完后,看似问题不难,貌似并不是那么回事,哈哈。一个人的力量是有限的,团队的力量是无限的。