【问题标题】:Is it possible to send SILENT LOCAL notification on iOS是否可以在 iOS 上发送 SILENT LOCAL 通知
【发布时间】:2017-12-10 04:39:21
【问题描述】:

我的应用程序唤醒来自服务器的静默远程通知的挂起模式,这正是我想要的。该服务器发送带有“content-available:1”的推送通知,它完成了这项工作。

现在我想在没有服务器帮助的情况下执行此操作,因此我想发送本地静默通知(来自应用程序)将来一次(就像 15 分钟后一样),但找不到设置“内容可用:1”的方法。因此,我最终会收到不会唤醒我的应用的 本地 通知,就像使用 remote 通知一样。

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

那么,是否可以为本地通知设置内容可用?

【问题讨论】:

  • 本地通知仅在用户点击通知时才会启动您的应用。因此,无声的本地通知毫无意义,而且不可能。
  • @Paulw11 我不是在谈论启动应用程序,我是在谈论从暂停模式唤醒应用程序。
  • 您可以在指定时间设置本地通知,这样您就可以唤醒您的应用。

标签: ios apple-push-notifications localnotification silent-notification


【解决方案1】:

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

【讨论】:

  • 如果您使用 BLE 连接,您可以在 iOS 或 Android 中通过 BLE 通知唤醒您的应用。实际上,在 iOS 中唤醒应用程序的唯一方法是使用通知模式。
【解决方案2】:

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

application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)

这个 UIApplicationDelegate 方法在 iOS 决定后台获取可能发生时被调用:

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

【讨论】:

  • “当 iOS 决定可以进行后台获取时,会调用此 UIApplicationDelegate 方法”。比你无法控制它。所以这是不可能的。
  • BackgroundFetch 是随机调用的(取决于很多东西,苹果没有提供任何相关信息)
【解决方案3】:

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

Xamarin docs 中有一些信息很好地解释了它

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

【讨论】:

    【解决方案4】:

    【讨论】:

      【解决方案5】:

      如果您不设置所有这些值,通知应该是静默的:

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

      【讨论】:

      • 是的,但是如果它处于挂起模式(意味着在后台而不运行),这不会唤醒我的应用程序。
      • 哦,好吧,不确定您是否可以通过本地通知实现这一点。您可以查看“beginBackgroundTaskWithName:expirationHandler:”在后台做一些工作,但完成任务的时间有限
      • 在没有用户触发的情况下无法接收本地通知(例如触摸通知)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      相关资源
      最近更新 更多