iOS 推送通知服务扩展工作不一致

标签 ios apple-push-notifications unnotificationserviceextension

  • 在我们的应用程序中,我们使用推送通知通知用户,但如果用户没有 收到推送(例如用户的设备处于离线状态),然后我们向他发送短信。
  • 由于 APNs 不提供送达报告,我们实现了自己的 使用服务扩展后端服务器发送报告的方法:

    • 当应用收到推送通知时,它会在服务扩展的方法内向后端发送一个 http 请求 -

      didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void)

可以在 30 秒内进行抓取作业或进行 http 请求。

但是,有时用户会提示同时收到 SMS 和 PUSH。

当我们检查数据库中的日志时,没有来自这些设备的 PUSH 传送报告。

我的问题是:

  1. Service Extension 是否有可能无法启动?
  2. 关于如何解决此类错误的任何建议?

最佳答案

在您的应用中,您可能在应用的目标功能中启用了后台模式远程通知以及服务扩展。所以发生的事情是,当您收到推送通知时,您的应用程序会激活大约 30 秒。在此期间,您的送货服务会被调用并更新您的服务器。由于通知不包含任何媒体,因此需要一些时间才能显示通知。

但是一旦您收到 cargo ,您的服务器就会向用户发送一条短信。所以这就是您同时收到 APN 和 SMS 的原因。

修复:在您的服务器上添加延迟以发送 SMS 约 1 分钟。以免发生冲突。

关于iOS 推送通知服务扩展工作不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52038933/

相关文章:

push-notification - FCM - 为什么在较新的 Firebase Admin SDK 中不再支持 FCM 直接 channel ?

ios - 是否可以防止显示远程通知?

ios - 无法将调试器附加到 UNNotificationServiceExtension

ios - 如何访问 iOS13 之前的 UIImage 深色外观

android - Unity3d:后台网络 Activity 和 Unity Run Loop

ios - 添加推送通知时出现无效权利错误

ios - UNNotificationServiceExtension didReceive 未调用

xcode - 在模拟器中测试丰富的通知

iphone - 如何分析iOS中音频队列服务中录制的音频文件?

ios - Facebook 登录 : -canopenurl issue with facebook sdk?