我知道这个话题已经讨论过了,但是我一直看到相互矛盾的错误,而且我越来越迷失。
我只是想知道当我的应用程序在后台并且收到推送通知时会发生什么。
我知道:
在前景中 - application:didReceiveRemoteNotification:被调用,没有警报,徽章或声音。
虽未发布 - 显示/播放警报,徽章和/或声音,如果用户点击通知的“查看/打开”(操作)按钮,则启动应用程序并调用application:didFinishLaunchingWithOptions:并传递通知有效负载,如果用户关闭通知并点击应用程序图标,调用相同的方法,但不传递有关通知的信息。
在背景中 - 这是我困惑的地方。我需要知道在后台运行或暂停是否会产生影响,无论如何调用什么方法以及是否显示/播放警报,徽章和/或声音。
感谢。
答案 0 :(得分:5)
您可能会发现this answer对How to respond to push notification view if app is already running in the background有用。
基本上,你可以判断你的应用程序是否只是在应用程序中被带到了前台: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
...
}