iOS:推送通知仅在应用程序在前台运行时才有效

Posted

技术标签:

【中文标题】iOS:推送通知仅在应用程序在前台运行时才有效【英文标题】:iOS: Push notifications work only if the app run in foreground 【发布时间】:2011-09-20 06:30:12 【问题描述】:

我有 2 部 iPhone,我正在测试 Apple 推送通知。

当我的应用在两台设备的前台运行时,它们可以完美运行。但是如果我关闭它,通过单击主页按钮,我将不再收到通知。

系统不显示通知弹出窗口。而且我认为这不取决于我的应用代码...

到目前为止我已经实现了

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

当应用程序在前台时它工作得很好。 我也实现了:

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

但 launchOptions 从不包含通知。但是,我猜这是正确的,因为当我选择一个我从未见过的通知警报按钮时会调用最后一个方法...

谢谢

【问题讨论】:

【参考方案1】:

当您调用方法- (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types 时,您应该指明适当的参数类型。如果您想在系统收到您设备的推送通知时显示警报,那么您应该传递UIRemoteNotificationTypeAlert

您还可以组合类型并将其传递到该参数中:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge

【讨论】:

谢谢。我实际上已经通过了它:[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert]; 在您的应用的全局设置中检查推送设置 一切都已启用(应用程序也已启用)。我刚刚检查过了。但关键是,如果应用程序在前台运行,我会收到通知,因此它们是允许的。 您是否将 json 字典中的文本传递给 APNS? ("alert"="text") 不知道为什么只有 UIRemoteNotificationTypeAlert 不起作用。在我把所有的论点结合起来之后,它就解决了。

以上是关于iOS:推送通知仅在应用程序在前台运行时才有效的主要内容,如果未能解决你的问题,请参考以下文章

实现 iOS 推送通知的问题

单击通知行为仅在应用程序在后台运行时才有效?

应用在前台运行时收到 iOS 推送通知

当应用程序在前台 iOS 中时,未在通知托盘(顶部)中获取推送通知

在后台推送 iOS 通知

清除以前的世博推送通知