申请在后台时的通知;

时间:2012-09-11 18:57:51

标签: ios notifications

我已经

- (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
    ...
}

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

感谢;

1 个答案:

答案 0 :(得分:1)

您需要使用

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

由于您的应用程序位于后台,因此无法了解有关传入通知的任何信息。该通知由iOS负责处理。

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

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

[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]

您可以执行本地通知有效负载:

[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]