【问题标题】:Is it possible to schedule a SILENT local notification in iOS?是否可以在 iOS 中安排 SILENT 本地通知?
【发布时间】:2016-08-02 20:11:26
【问题描述】:

我正在尝试在本地安排通知,因为我在后端还没有必要的结构。这个想法是,在 X 段时间后,某些条件得到验证;如果满足,则会触发常规的本地通知。

这可以通过使用计时器轻松实现,但其中一些时间段足够长(1 小时、24 小时),这不起作用。

这就是我最终在本地通知中思考的方式。我可以安排一个 +24 小时的开火时间。问题是我需要保持沉默以验证条件。

configuring a local notification 部分here 看来,只有远程通知可以静音,但并没有真正说不能这样做。

另外,我发现可以触发本地通知,只需要徽章编号,它会更改徽章。虽然我的 AppDelegate 中的回调从未被调用过。

我看到有些人说不能这样做,但还没有找到真正确凿的官方证据来说明这一点。有人设法做到这一点吗?或者确定这实际上是不可能的?任何建议都会有很大帮助,提前非常感谢!

【问题讨论】:

  • 你不能有一个“静默”的本地通知。后台获取模式可能有用
  • @Paulw11 是的,但它只适用于远程通知,对吧?没有远程通知就没有办法唤醒应用吗?
  • 后台获取模式与通知无关。这是一种后台模式,您可以选择让 iOS 定期唤醒您的应用。阅读 iOS 应用程序编程指南中的后台模式部分
  • 没错。您无法安排在特定时间执行。您可以使用后台获取时间来安排特定时间的本地通知。如果您想在特定时间触发后台执行,那么您唯一的选择是发送静默推送的服务器
  • 对...所以总结一下,我可以通过后台执行进行静默执行,但我无法将其安排到特定时间。我可以将本地通知安排到特定时间,但它们不能保持沉默。因此,我将不得不设置远程推送通知,因为它们可以被安排和静默。谢谢!

标签: ios notifications uilocalnotification


【解决方案1】:

我尝试过并有与您相同的体验 - 当我的应用不在前台时,永远不会调用回调。这是设计使然。 Apple 文档指出,只有当您的应用处于前台时才会调用回调userNotificationCenter:willPresentNotification:withCompletionHandler:https://developer.apple.com/reference/usernotifications/unusernotificationcenterdelegate/1649518-usernotificationcenter?language=objc

当应用程序不在前台时接收通知的唯一回调方法是didReceiveRemoteNotification,但不幸的是它仅用于推送通知(静默或其他方式)。 https://developer.apple.com/reference/usernotifications/unusernotificationcenterdelegate/1649518-usernotificationcenter?language=objc

【讨论】:

  • 所以你的意思是当你的应用在前台时调用回调?
  • 我在那个应用程序上工作已经有 2 年了,但当时,是的,当应用程序处于前台时它可以工作。较新版本的 iOS 可能会破坏这一点。
猜你喜欢
  • 2017-12-10
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多