-
在我们的应用程序中,我们使用推送通知通知用户,但如果用户没有't received push (e.g. user' s设备离线),那么我们会向他发送短信 .
-
由于APN不提供交付报告,我们已经实施了自己的方法,使用 Service Extension 向 backend 服务器发送报告:
-
当应用程序收到推送通知时,它会在服务扩展的方法内向后端发送http请求 -
didReceive(_ request:UNNotificationRequest,withContentHandler contentHandler:@escaping(UNNotificationContent) - > Void)
可以在30秒内进行提取作业或发出http请求 .
但是,有时用户会抱怨同时接收短信和推送 .
当我们检查数据库中的日志时,这些设备没有PUSH传送报告 .
My questions are:
-
服务扩展是否有可能无法启动?
-
有关如何解决此类错误的任何建议?
1 回答
在您的应用中,您可能已在应用的目标功能中启用 Background Mode 或 Remote notifications 以及 Service Extension . 所以发生的事情是,当您收到推送通知时,您的应用程序处于活动状态大约30秒 . 在此期间,您的交付服务将被调用并更新您的服务器 . 由于通知不包含任何媒体,因此显示通知需要一些时间 .
但是一旦您收到交付,您的服务器就会向用户发送短信 . 所以这就是你同时获得APN和短信的原因 .
Fix: Add a delay at your server for sending SMS by around 1 min. So as to avoid conflict.