即使在应用程序终止后也能获得 Apple 的远程推送通知

Posted

技术标签:

【中文标题】即使在应用程序终止后也能获得 Apple 的远程推送通知【英文标题】:Get Apple's remote push notifications even after app terminates 【发布时间】:2014-08-07 07:00:07 【问题描述】:

我正在开发一个 ios 应用程序,它会在特定时间间隔接收苹果的远程推送通知。当应用程序处于活动状态以及应用程序处于后台时,成功接收到通知。但是当应用从应用切换器/程序坞中终止时,直到应用重新启动后才会收到通知。

我尝试了以下代码以使应用程序在后台保持活动状态。在applicationWillTerminate: 方法中实现了相同的代码,但它不起作用。

__block UIBackgroundTaskIdentifier bgTask ;
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^
        [app endBackgroundTask:bgTask];
        [app enabledRemoteNotificationTypes];
        bgTask = UIBackgroundTaskInvalid;
    ];

在应用终止后接收通知的最佳方式是什么?

【问题讨论】:

如果您指定远程通知后台模式,那么 iOS 将在收到远程通知时重新启动您的应用程序除非您的应用程序从切换器中终止,在这种情况下它们假设用户不希望您的应用运行,因此在用户手动启动您的应用之前,您的应用不会重新启动 这违反了苹果的设计,我认为你不应该浪费时间和精力。 听起来你想要静默通知打开你的应用程序以允许处理developer.apple.com/library/ios/documentation/UIKit/Reference/…: 【参考方案1】:

如果您在应用切换器中主动停止应用,它将停止接收任何推送通知。

这是 Apple 工程师在开发者论坛中所述的预期行为。

【讨论】:

是的,我现在已经理解了这种行为。谢谢你。 :) 有这个变化吗?我一直在阅读一些答案,暗示@kevin griesbach 所说的内容是正确的,但是当我使用全新的应用程序和休斯顿对其进行测试时,即使我在应用程序切换器github.com/nomad/houston 中明确停止该应用程序后,我也可以收到通知跨度>

以上是关于即使在应用程序终止后也能获得 Apple 的远程推送通知的主要内容,如果未能解决你的问题,请参考以下文章

我希望 func locationManager(manager: CLLocationManager, didUpdateToLocation 即使在应用程序被杀死后也能被调用?

DBLink 查询即使在完成后也不会终止

我需要 Adob​​e AIR For Android Encrypted Local Store 或 Application Storage 数据,即使在卸载或更新应用程序后也能保留。

Spring-security:即使在 JVM 重启后也能保持活动会话

使用UITextField的UITableView - 即使在用户滚动后也能保留数据

Android kotlin:即使在授予权限后也获得 EACCES(权限被拒绝)