问题描述
我的应用允许 APNS 通知进入,无论应用是后台还是前台,例如:
func userNotificationCenter(_ center: UserNotificationCenterProtocol,willPresent notification: NotificationProtocol,withCompletionHandler completionHandler: @escaping (UNNotificationPresentationoptions) -> Void) {
completionHandler([.alert,.badge,.sound])
}
但是,在扩展程序本身中,我似乎无法确定应用程序当前是前台还是后台。尝试使用 UIApplication.shared 导致错误:
let application = UIApplication.shared
错误:
'shared' 在 iOS 的应用程序扩展中不可用:在适当的情况下改用基于视图控制器的解决方案。
是否有另一种方法可以确定通知服务扩展中的应用当前状态?我看到有一些特定于扩展的生命周期方法,例如 NSExtensionHostwillEnterForeground,但我不知道如何订阅那些通知(the documentation 是稀疏的)。
解决方法
据我所知,目前这是不可能的。
我的猜测是 Apple 希望这些扩展程序依赖于主应用程序的状态。