[英]Objective-c queue of calling appdelegate methods
在UIApplicationDelegate
我们有这样的方法:
- (void)applicationWillEnterForeground:(UIApplication *)application
和
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
几乎每次applicationWillEnterForeground
都首先调用时,但是我发现有时候didReceiveLocalNotification
首先调用,但是很少。 我试图找到对此的一些解释,但没有任何结果。 在https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/iphoneappprogrammingguide.pdf中,我找不到此信息
我在不同设备上的iOS 8 beta和iOS 7.1中遇到了这种现象。 也许有人知道为什么或者也许在文档中有链接描述了调用appdelegate方法的这种奇怪现象
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
每当您收到本地通知并打开应用程序(在后台或前台)时,都会调用
- (void)applicationWillEnterForeground:(UIApplication *)application
仅在该应用即将成为前台应用时才会被调用。 这两种方法都没有直接的关系,因为如果您的应用程序被打开,并在前台applicationWillEnterForeground
已经被调用和didReceiveLocalNotification
将每次收到新通知时调用,如果应用程序被打开,但在后台只didReceiveLocalNotification
将被执行,除非用户在收到应用程序后将其打开(因此也会调用applicationWillEnterForeground
)。 如果该应用程序根本没有打开,并且该应用程序收到推送通知,则如果用户通过与该通知进行交互来打开该应用程序,则不会调用任何方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
将使用在launchOptions
字典中设置的键UIApplicationLaunchOptionsRemoteNotificationKey
进行调用。
通常,您不应该期望在另一个方法之前先调用它,因为这两种方法不是严格相关的,也许您想实现的目标可以通过其他方法实现。 如果是这种情况,您应该扩大目标答案,以获取有关如何执行操作的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.