0

我已经

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateActive )
        // app was already in the foreground
    else
        // app was just brought from background to foreground
    ...
}

现在有可能我在通知到达时执行一些操作,将应用程序保持在后台;收到通知时,我不想将我的应用程序置于前台;我想要的是当通知到达时,我只是设置了一些标志和(应用程序仍在后台),当用户自己打开应用程序时,他/她可以以某种优雅的方式查看消息;摘要:我不想在通知到达时将应用程序置于前台,但想在我的代码中执行一些操作,将应用程序保持在后台;

谢谢;

4

1 回答 1

1

你会想要使用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions

由于您的应用程序在后台,它不会知道有关传入通知的任何信息。通知由 iOS 处理。

但是,当您的应用由于用户滑动/点击通知而打开时,您的应用将获得上述方法中传递的launchOptions。如果用户直接打开应用程序(点击应用程序图标),则launchOptions将为空。有关更多详细信息,请参阅UIApplicationDelegate 协议参考

要检索远程通知有效负载,您可以执行以下操作:

[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]

对于本地通知有效负载,您可以执行以下操作:

[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]
于 2012-09-11T19:01:09.253 回答