我正在开发一个处理静默通知的框架,以便部署本地通知(带警报(,原因是我从Firebase发送数据消息,其中有效负载具有自定义键值对(指示通知必须如何表现(,所以我必须在应用程序中接收它们才能转换它们。
一切都很好,当应用程序执行时,我在前台和后台收到通知。问题是,当应用程序被用户杀死或完全关闭时,我无法收到通知。苹果文档中指出了这一原因,其中表示,如果用户关闭了应用程序,didReceiveRemoteNotification:fetchCompletionHandler
将不会执行,因为系统不会启动该应用程序。
因此,我被告知,即使应用程序关闭,我也应该使用默认的apns键值对来接收默认的推送通知,如果我想修改或添加一些内容到获取请求内容的通知中,请使用通知服务扩展。
我遇到的问题是,当我收到无声通知时,我应该做一些额外的处理,比如报告我收到了通知。这就是我认为应用程序应该执行的原因,因为它需要执行时间。
但我一直在思考和研究,我无法理解其他应用程序(如youtube、facebook等(如何在应用程序关闭的情况下接收带有图像附件的通知,难道不应该为了添加附件,你需要在本地附加任何东西吗?,所以你应该以某种方式下载它,而这个过程需要应用程序有时间执行该任务,或者这是由IOS管理的?
或者我错过了一些关于推送通知的内容?
iOS10引入了"丰富通知"的概念。是的,它最终是通过定期推送通知发送的。但它包含指向图像(或其他媒体/数据(的链接。
在你的应用程序中创建一个"通知服务扩展"可以让你在发送通知时运行代码,比如下载负载中"媒体url"传递的图像。
您还可以创建一个"通知内容"目标,允许您自定义UI,允许您扩展通知以显示UIViewController以显示其他数据/内容。
这里有一个教程的链接,可以帮助您入门:https://medium.com/@tsif/ios-10-带中间附件的一次推送通知-a54dc86586c2