application:didFinishLaunchingWithOptions:
由于通知而启动应用程序时,只会使用有效负载信息调用。例如,如果用户点击通知警报(在通知中心添加)或content-avialble = 1
在有效负载中收到的通知(报亭通知)并且如果您的应用不在前台也不在后台,则可能会发生这种情况。
如果您的应用在后台运行时收到通知。如果是报亭通知,或者如果用户点击警报的操作按钮,则调用下面的方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
不[[UIApplication sharedApplication] applicationState]
等于UIApplicationStateActive
。
在上述情况下,如果用户没有点击通知警报的操作按钮并通过点击它来启动应用程序,则不会调用didFinishLaunchingWithOptions
或didReceiveRemoteNotification
调用。
如果您的应用在前台didReceiveRemoteNotification
调用时收到通知,则[[UIApplication sharedApplication] applicationState]
等于UIApplicationStateActive
.
对于徽章 in notification
,如果您的应用程序未运行,则不会执行任何代码,并且徽章在应用程序图标中增加 1。当您启动应用程序(点击应用程序图标)didFinishLaunchingWithOptions
时,通常会调用它。(如果收到通知时应用在后台或前台,同上)
所以我认为这涵盖了所有可能的情况。另请注意,背景案例适用于iOS SDK >= 4.0