4

我知道这个话题已经被讨论过了,但是我一直看到相互矛盾的说法,而且我越来越迷失了。

我只想知道当我的应用程序在后台并收到推送通知时会发生什么。

我知道:

在前台 - application:didReceiveRemoteNotification: 被调用并且没有警报、徽章或声音。

未启动时 - 显示/播放警报、徽章和/或声音,如果用户点击通知的“查看/打开”(操作)按钮,则会启动应用程序并调用 application:didFinishLaunchingWithOptions: 并且通知有效负载是已通过,如果用户关闭通知并点击应用程序图标,则会调用相同的方法,但不会传递有关通知的信息。

在后台 - 这是我感到困惑的地方。我需要知道在后台运行或暂停是否会产生影响,以及在任何情况下调用什么方法以及是否显示/播放警报、徽章和/或声音。

谢谢。

4

1 回答 1

5

如果应用程序已经在后台运行,您可能会发现如何响应推送通知视图的答案很有用。

基本上,您可以使用以下代码在 application:didReceiveRemoteNotification: 中判断您的应用程序是否刚刚被带到前台:

- (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
    ...
}
于 2011-10-17T23:54:38.790 回答