从推送通知打开应用程序时是不是调用了 didFinishLaunchingWithOptions
Posted
技术标签:
【中文标题】从推送通知打开应用程序时是不是调用了 didFinishLaunchingWithOptions【英文标题】:Is didFinishLaunchingWithOptions called when app opens from push notification从推送通知打开应用程序时是否调用了 didFinishLaunchingWithOptions 【发布时间】:2016-01-20 05:54:01 【问题描述】:我已经从后台杀死了该应用程序。杀死应用程序后,我发送一个推送通知。我对将被调用的AppDelegate
函数有两个疑问:1。 didFinishLaunchingWithOptions
会被调用吗?2。如果是,将首先调用didFinishLaunchingWithOptions
还是首先调用didReceiveRemoteNotification
?
我无法测试这个场景,因为它无法调试,应用程序从推送通知打开的事实。
【问题讨论】:
【参考方案1】:如果您的应用程序处于后台模式,则永远不会调用 didFinishLaunchingWithOptions
方法,而只会调用 didReceiveRemoteNotification
方法
并且如果你的应用程序被杀死只有didFinishLaunchingWithOptions
方法被调用didReceiveRemoteNotification
方法永远不会被调用。
【讨论】:
好吧,当应用程序被杀死时,didReceiveRemoteNotification 中的代码会在收到推送通知时执行。 如果没有调用didReceiveRemoteNotification,如何识别pp是从推送通知中打开的?【参考方案2】:我已经从后台杀死了该应用程序。
我猜您是想说您已从托盘中删除了该应用。如果是这样,
-
是的,在这种情况下它会被调用。
didReceiveRemoteNotification
此时不会打电话。只有当您的应用在后台运行时,它才会被调用。
【讨论】:
好吧,当应用程序被杀死时,didReceiveRemoteNotification 中的代码会在收到推送通知时执行。 如果没有调用didReceiveRemoteNotification,如何识别pp是从推送通知中打开的? 是的,你可以这样检查,- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions if (launchOptions != nil) // Launched from push notification NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
以上是关于从推送通知打开应用程序时是不是调用了 didFinishLaunchingWithOptions的主要内容,如果未能解决你的问题,请参考以下文章
检测应用程序是不是从推送通知启动/打开,然后将其重定向到特定视图控制器