开发者社区 问答 正文

应用研发平台EMAS中react native应用集成后,为什么华为手机上推送通知的送达率不高?

应用研发平台EMAS中react native应用集成后,在华为手机上推送通知,通知的送达率不高,是什么原因呢?华为通知送达率不高, 打包出来release的apk,在远程真机上测的。

展开
收起
十一0204 2023-12-12 22:48:23 97 分享 版权
阿里云 AI 助理回答

在应用研发平台 EMAS 中,React Native 应用集成后,在华为手机上推送通知的送达率不高,可能由以下几个原因导致。以下是详细分析及解决建议:


1. 未接入华为厂商通道

华为手机对第三方推送服务(如阿里云自有通道)有严格的限制,尤其是在应用被杀进程或处于后台时,推送消息可能无法通过自有通道送达。

解决方案:

  • 接入华为厂商通道:确保已正确集成华为厂商通道 SDK,并完成相关配置。华为厂商通道能够显著提高推送消息的到达率,特别是在应用被杀进程或系统限制后台运行的情况下。
  • 配置华为推送服务的 AppKeyAppSecret,并确保在华为开发者平台上完成应用注册和推送服务开通。

2. 华为通知分类设置问题

华为推送通道支持消息分类(如资讯营销类和服务与通讯类),不同分类的消息优先级和展示行为不同。如果未正确设置消息分类,可能导致通知被系统过滤或降权。

解决方案:

  • 在推送请求中设置 AndroidNotificationHuaweiChannel 参数,明确指定消息分类:
    • LOW:适用于资讯营销类消息。
    • NORMAL:适用于服务与通讯类消息。
  • 确保已在华为开发者平台申请对应的消息分类权限。

3. 推送通道优先级问题

EMAS 移动推送默认优先使用自有通道进行消息下发,只有在自有通道断连时才会切换到厂商通道。如果华为手机对自有通道进行了限制,可能导致消息无法及时送达。

解决方案:

  • 检查推送日志,确认消息是否通过华为厂商通道下发。如果未使用厂商通道,需调整推送策略,强制使用华为厂商通道。
  • 在推送请求中设置 AndroidNotificationChannel 参数,确保与华为推送通道的 channel_id 对应。

4. 应用被强制关闭

在华为手机上,如果用户通过 设置 > 应用管理 > 强制关闭应用 的方式关闭了应用,推送消息将无法送达。这是由于华为系统限制了强制关闭应用的自启动能力。

解决方案:

  • 引导用户避免强制关闭应用,或在应用内提示用户开启 自启动权限后台运行权限
  • 在华为开发者平台上检查推送服务的配置,确保消息能够在设备重启后重新激活。

5. 电池优化设置

华为手机的电池优化功能可能会限制应用的后台运行,从而影响推送消息的接收。

解决方案:

  • 引导用户在 设置 > 电池 > 电池优化 中,将应用设置为“允许后台运行”。
  • 在推送 SDK 初始化时,检查是否启用了电池优化功能,并提示用户关闭。

6. 推送内容格式问题

华为推送通道对通知标题和内容的格式有一定要求。如果标题或内容过于简单,可能导致推送失败。

解决方案:

  • 确保推送消息的标题和内容符合华为推送通道的要求,避免使用过于简单的文本。
  • 在推送请求中设置 AndroidInboxBody 参数,使用多行文本模式提升消息的丰富性。

7. Release APK 配置问题

在打包 Release APK 时,可能存在以下问题导致推送失败: - 签名不一致:推送服务依赖于应用的签名信息,如果 Release APK 的签名与华为推送服务注册的签名不一致,可能导致推送失败。 - ProGuard 配置错误:如果 ProGuard 配置不当,可能导致推送相关的类或方法被混淆或移除。

解决方案:

  • 确保 Release APK 的签名与华为推送服务注册的签名一致。
  • proguard-rules.pro 文件中添加以下规则,防止推送相关类被混淆:
    -keep class com.huawei.hms.** { *; }
    -keep class com.alibaba.sdk.android.push.** { *; }
    

8. 推送 QPS 或限额限制

华为推送通道对消息的发送频率和数量有一定的限制。如果超过限额,可能导致部分消息无法送达。

解决方案:

  • 检查推送日志,确认是否存在因 QPS 或限额限制导致的失败。
  • 如果处于测试阶段,可以通过华为开发者平台申请更高的测试配额。

9. 其他潜在问题

  • 网络环境问题:远程真机测试时,网络环境可能不稳定,导致推送消息延迟或丢失。
  • SDK 版本问题:确保使用的 EMAS 推送 SDK 和华为厂商通道 SDK 是最新版本。

解决方案:

  • 在稳定的网络环境下重新测试推送功能。
  • 升级 EMAS 推送 SDK 和华为厂商通道 SDK 至最新版本。

总结

针对华为手机推送通知送达率不高的问题,建议按照以下步骤逐一排查和解决: 1. 确保已正确接入华为厂商通道。 2. 设置正确的消息分类和通知通道参数。 3. 检查应用的自启动权限和电池优化设置。 4. 优化推送内容格式,避免过于简单。 5. 确保 Release APK 的签名和 ProGuard 配置正确。 6. 检查推送 QPS 和限额限制。

通过以上措施,可以有效提升华为手机上的推送通知送达率。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答