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

我有一个应用程序需要与服务器(每24小时刷新一次数据)进行一次通信。 即使应用程序未打开,也不需要在后台进行这种操作。

理想情况是我想要的是:

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

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

如果推送通知不是正确的方法来做到这一点,是什么?

多谢你们!

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

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

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

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

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

你的应用程序将不能运行任何代码,除非用户打开推送通知,推送通知由操作系统处理,你的应用程序无法控制,而不是在活动或在后台,你应该看看推通知编程指南

另一种方法来完成你正在尝试做什么,每当应用程序启动,最后一次更新发生在24小时之前,从服务器获取数据,

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