2011-09-03 27 views
5

我有一个具有30秒进程的iphone应用程序,它可以执行一些网络IO。基本上,当应用程序在后台,我希望这个过程每小时运行一次(实际上每天一次,但如果失败,我希望它在一个小时内重新运行)。如何在后台每小时运行一次〜30秒的进程(iphone应用程序)

有了ios 4的背景特征,这可能吗?如果是这样,怎么样?我会遇到什么限制?

非常感谢!

+1

我做了大量的研究,发现“沉默推送通知“为我做了诡计。检出http:// stackoverflow。com/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-runs-in-the-background- –

回答

6

看看苹果公司的有关在后台运行的代码文档。

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

有接近转到后台任务的几种不同的方式。唯一可以完全后台处理的应用程序是“音频”,“voip”和“位置”应用程序,这需要在Info.plist中声明。

如果你的应用程序不是这种类型的,你可能会发现很难做到你想要的东西。有一些方法可以让你的应用程序在有限的时间内保持活动状态(也在该链接中),但最终你的应用程序将被关闭。

本地通知只会提示用户打开应用程序 - 您是否真的想每隔30秒在手机上弹出警报?

+0

看起来像没有办法做我想做的事。谢谢你让我知道。 – Chris

+0

此答案中的链接已死亡。你可以在http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Opsimath

0

我相信,使用本地通知,将帮助.... 检查以下....

  1. http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
  1. 应用程序可以创建和安排本地通知,然后操作系统按计划日期和时间交付它。如果应用程序在前台未处于活动状态时传递该应用程序,则会显示警报,标记应用程序图标或播放声音 - 无论在UILocalNotification对象中指定。如果应用程序在前台运行,则没有警报,徽章或声音;相反,如果委托实现它,应用程序将调用didReceiveLocalNotification:方法。

  2. 委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,它可以访问该数据并相应地处理它。另一方面,如果本地通知仅标记应用程序图标,并且用户作为响应启动应用程序,则应用程序:didFinishLaunchingWithOptions:方法被调用,但选项字典中不包含UILocalNotification对象。

+0

本地通知允许您从弹跳板弹出警报消息,更新应用图标的徽章数字,或播放声音。但它从来没有给你任何做网络I/O的机会。 –

+0

嗨,感谢您的信息。我根据以下内容写了上面的内容1.应用程序:didReceiveLocalNotification:参考讨论。他们说这可能是UILocalNotification对象包含的任何东西。 2.在UILocalNotification的Overview部分中:“委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,它可以访问该数据并相应地处理它。”....所以我认为userinfo字典可以有一个URL来调用,它可以调用它并处理数据,如果过程可以在特定的时间内完成允许后台进程 – Mohammad

1

我正在做一些类似的研究,看看this SO answer以防你以前找不到它。诸如DataMan或Data Usage之类的应用程序必须在后台执行某种类型的定期代码执行,所以我不能100%确信你所要求的是不可能的。

+0

找到关于后台处理的信息。看起来有趣,但我很漂亮肯定这种hacky解决方案会让我被踢出应用商店pronto! – Chris

相关问题