Ios 告诉操作扩展的后台状态

Ios 告诉操作扩展的后台状态,ios,objective-c,uikit,ios-extensions,Ios,Objective C,Uikit,Ios Extensions,UIApplication具有方便的applicationState属性,允许您查看应用程序是否在后台。在操作(和共享)扩展中,使用UIApplication是非法的,即使您在扩展中获得了它的实例,它也总是报告applicationState=UIApplicationStateBackground。我还试着观察uiapplicationidenterbackgroundnotification,它从不触发 有没有一种方法可以有效地判断某个扩展是否在前台或后台的应用程序中运行?在iOS 8.2之

UIApplication
具有方便的
applicationState
属性,允许您查看应用程序是否在后台。在操作(和共享)扩展中,使用
UIApplication
是非法的,即使您在扩展中获得了它的实例,它也总是报告
applicationState=UIApplicationStateBackground
。我还试着观察
uiapplicationidenterbackgroundnotification
,它从不触发


有没有一种方法可以有效地判断某个扩展是否在前台或后台的应用程序中运行?

在iOS 8.2之后,您可以查看列出的通知

NSExtensionHostDidBecomeActiveNotification
NSExtensionHostWillResignActiveNotification
NSExtensionHostDidEnterBackgroundNotification
NSExtensionHostWillEnterForegroundNotification


在注册这些通知之前,请务必检查您是否在相应版本的设备上,否则您的扩展将崩溃,因为它们将是
nil

Swift 3格式:NSNotification.Name.nsExtensionHostDidEnterBackground我发现didBecomeActive和WillEnter前台通知不会在我的共享扩展首次用于主机应用时触发。它们只在第二次使用时出现,等等。