- 在我们的应用程序中,我们使用推送通知通知用户,但如果用户没有 收到推送(例如用户的设备处于离线状态),然后我们向他发送短信。
由于 APNs 不提供送达报告,我们实现了自己的 使用服务扩展向后端服务器发送报告的方法:
当应用收到推送通知时,它会在服务扩展的方法内向后端发送一个 http 请求 -
didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void)
可以在 30 秒内进行抓取作业或进行 http 请求。
但是,有时用户会提示同时收到 SMS 和 PUSH。
当我们检查数据库中的日志时,没有来自这些设备的 PUSH 传送报告。
我的问题是:
- Service Extension 是否有可能无法启动?
- 关于如何解决此类错误的任何建议?
最佳答案
在您的应用中,您可能在应用的目标功能中启用了后台模式或远程通知以及服务扩展。所以发生的事情是,当您收到推送通知时,您的应用程序会激活大约 30 秒。在此期间,您的送货服务会被调用并更新您的服务器。由于通知不包含任何媒体,因此需要一些时间才能显示通知。
但是一旦您收到 cargo ,您的服务器就会向用户发送一条短信。所以这就是您同时收到 APN 和 SMS 的原因。
修复:在您的服务器上添加延迟以发送 SMS 约 1 分钟。以免发生冲突。
关于iOS 推送通知服务扩展工作不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52038933/