如何检测主应用程序是否在 NotificationServiceExtension 中的前台?

问题描述

我的应用允许 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 希望这些扩展程序依赖于主应用程序的状态。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...