可以使用推送通知来运行代码而无需通知用户吗?

时间:2012-08-08 09:02:41

标签: ios notifications push-notification background-process

我有一个应用程序需要每24小时与服务器通信(刷新它的数据)。即使应用程序未打开也不在后台,这需要发生。

理想情况下我喜欢的是:

  • 我的服务器每隔24小时向iPad发送推送通知
  • 这会唤醒应用程序,并运行刷新数据所需的代码
  • 然后放弃通知

这有可能吗?
应用程序是否仅在用户点击通知后被唤醒?或者我可以在显示通知之前运行一些代码吗? 我甚至可以丢弃通知消息吗?

如果推送通知不是正确的方法,那么???

谢谢你们!

4 个答案:

答案 0 :(得分:9)

随着iOS 7的发布,终于可以使用远程/静音通知。它们与推送通知的工作方式相同,但不是立即向用户发出警报,而是可以启动后台获取模式并上传/下载新内容。

这是一个简单的教程:http://www.objc.io/issue-5/multitasking.html

答案 1 :(得分:2)

仅当您的应用程序是报亭应用程序时才可以这样做,如果是,您可以每24小时发送一次content-available: true推送通知。

如果它不是报亭应用,您可以使用GPS围栏来运行代码。如果用户希望在用户靠近某个区域(即他们的家/工作)时更新应用,则允许用户设置GPS围栏。这将唤醒应用程序,然后您可以运行后台下载。 Instapaper就是这样做的。

答案 2 :(得分:0)

如果期间总是24小时,则可以使用本地通知而不是推送通知。

你的应用程序将无法运行任何代码,除非用户打开推送通知,推送通知由操作系统处理,并且您的应用程序在它不活动时无法控制它们或在后台你应该看看在the push notification programming guide

完成您要执行的操作的另一种方法是每次启动应用程序时从服务器获取数据,并在24小时前发生上次更新,

  1. 每次与服务器联系时,请在NSUserDefault中保存日期
  2. 每次用户打开应用程序时,请检查上次服务器联系是否在24小时之前发生,然后刷新数据

答案 3 :(得分:0)

可以使用所谓的VOIP推送通知。即使应用程序完全关闭,此通知也可以在后台运行代码。