应用研发平台EMAS杀掉进程后,离线的还是没收到怎么办?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用阿里云移动研发平台(EMAS)的推送功能时,如果用户手动杀掉应用进程后,离线推送消息仍然无法送达,可能是由于以下原因导致的:
确保推送SDK在Application
中完成初始化,并且主进程和channel进程均执行了相同的初始化操作。
- 关键点:推送SDK的初始化代码需要在Application
的onCreate
方法中调用,避免因多进程限制而屏蔽非主进程的初始化工作。 - 验证方法:检查日志中是否有类似以下的关键日志: - PUSH_00000
:表示推送SDK初始化成功。 - 各厂商通道注册成功的日志(如小米Token注册成功日志)。
为了提升推送到达率,建议接入厂商推送通道(如小米、华为、荣耀、OPPO、vivo等)。
- 操作步骤: 1. 根据官方文档配置各厂商的推送通道。 2. 确保在高级配置中填写完整参数,包括: - "通知点击后跳转activity" - "辅助弹窗title" - "辅助弹窗body内容" - Android 8.0特殊配置中的通知通道值需与应用保持一致。 3. 验证厂商通道是否正常工作,例如检查日志中是否有厂商Token注册成功的记录。
如果设备处于离线状态,推送消息会被缓存并在设备上线后重新发送。
- 排查步骤: 1. 确认推送消息是否设置了离线缓存时间(默认为72小时)。 2. 检查设备上线后是否能够接收到缓存的推送消息。 3. 如果仍然无法收到,联系技术支持分析上下线时间和推送时间的差异。
推送SDK依赖channel进程上报ack消息,如果channel进程未正确初始化,可能导致服务端误认为消息未送达。
- 解决方法: 1. 检查代码中是否屏蔽了非主进程的初始化逻辑。 2. 确保channel进程与主进程执行了相同的初始化操作。 3. 验证日志中是否有ack消息上报成功的记录。
通过以上步骤,您可以有效解决杀掉进程后离线推送消息无法送达的问题。