1

我的应用程序中有推送通知,如果应用程序关闭或应用程序在后台,一切正常,但如果应用程序运行(活动)推送通知不显示,但调用方法application:didReceiveRemoteNotification:

4

2 回答 2

4

您可以使用以下代码在 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
    ...
}

您无法在交付时选择使用何种呈现方法来呈现推送通知,即在通知本身中编码(可选警报、徽章编号、声音)。但是由于您可能同时控制了应用程序和推送通知的有效负载,您可以在有效负载中指定是否已经向用户显示了警报视图和消息。只有在应用程序已经在前台运行的情况下,您才知道用户不只是通过警报或定期从主屏幕启动您的应用程序。

于 2012-11-28T18:30:35.607 回答
1

看看这个答案https://stackoverflow.com/a/7965961/869455

当应用程序打开时,应用程序有责任在 application:didReceiveRemoteNotification: 中适当地处理通知,并向应用程序内的用户显示消息。

于 2012-11-28T18:26:47.843 回答