是否可以在 iOS 上发送 SILENT LOCAL 通知

Is it possible to send SILENT LOCAL notification on iOS

我的应用程序从挂起模式唤醒来自服务器的静默远程通知,完全符合我的要求。此服务器发送带有“content-available:1”的推送通知,它完成了工作。

现在我想在没有服务器帮助的情况下执行此操作,因此我想发送无声本地通知(来自应用程序)一次未来 (比如 15 分钟后),但找不到设置 "content-available:1" 的方法。所以我最终收到了 local 通知,它没有唤醒我的应用程序,就像我可以使用 remote 通知一样。

我搜索了信息,我能找到的都是交互式通知的示例以及如何设置标题、body、警报和触发器(基于位置、日期等。)。但是没有关于如何设置 content-available 属性.

那么,是否可以为本地通知设置 content-available?

如果您没有设置所有这些值,通知应该是无声的:

notification.alertBody = message;
notification.alertAction = @"Show";
notification.category = @"ACTION"; 
notification.soundName = UILocalNotificationDefaultSoundName;

我认为在没有用户干预本地通知的情况下唤醒应用程序是不可能的。 后台提取可能是您的案例的可能解决方案。

application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

当 iOS 决定可以进行后台获取时调用此 UIApplicationDelegate 方法:

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)

给你伙计:) Apple documentation over silent notification

后台获取是这里唯一的解决方案。

Xamarin docs 中有一些信息解释得很好

似乎 PushNotifications 无论如何都使用后台获取,所以这实际上是相同的路由,尽管通过不精确的计时机制。

如果没有用户干预,不可能。在 iOS 中,没有 Android 的 AlarmManager 解决方案可以将应用程序从挂起模式唤醒。在 iOS 中,无法从 suspended 模式定期唤醒应用程序,远程推送通知除外(如果外部应用程序定期发送推送通知)。