6

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

理想情况下,我想要的是:

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

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

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

多谢你们!

4

4 回答 4

9

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

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

于 2014-01-31T01:13:34.997 回答
2

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

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

于 2012-08-08T09:07:23.437 回答
0

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

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

完成您尝试做的事情的另一种方法是每次启动应用程序并且上次更新发生在 24 小时前时从服务器获取数据,

  1. 每次联系服务器时,将日期保存在 NSUserDefault
  2. 每次用户打开应用程序时检查最后一次服务器联系是否发生在 24 小时之前然后刷新数据
于 2012-08-08T09:52:05.527 回答
0

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

于 2018-08-01T11:34:55.010 回答