我有一个具有30秒进程的iphone应用程序可以执行某些网络IO。基本上,当应用程序在后台时,我希望这个过程每小时运行一次(实际上每天运行一次,但如果它失败了,我希望它在一小时内重新运行)。
具有ios 4的背景功能,这可能吗?如果是这样,怎么样?我会遇到什么限制?
非常感谢!
答案 0 :(得分:6)
查看Apple关于在后台运行代码的文档。
接近后台任务的方法很少。唯一可以完全后台处理的应用程序是“音频”,“voip”和“位置”应用程序,这需要在Info.plist中声明。
如果您的应用不属于此类型,您可能会发现很难轻松完成您想要的操作。有一些方法可以让您在有限的时间内(也在该链接)保持您的应用程序在后台运行,但最终您的应用程序将被关闭。
本地通知只会提示用户打开应用程序 - 您是否真的希望每30秒在手机上弹出警报?
答案 1 :(得分:1)
我正在进行某种类似的研究,看看this SO answer,以防你以前找不到它。像DataMan或Data Usage这样的应用程序必须在后台执行某种定期的代码执行,所以我不是100%确信你所要求的是不可能的......
答案 2 :(得分:0)
我相信使用本地通知会有所帮助...... 检查以下....
应用程序可以创建和计划本地通知,然后操作系统会在计划日期和时间提供该通知。如果它在应用程序在前台不活动时传递它,它会显示警报,标记应用程序图标或播放声音 - 无论在UILocalNotification对象中指定的是什么。如果应用程序在前台运行,则没有警报,标记或声音;相反,如果委托实现它,则调用application:didReceiveLocalNotification:方法。
- 醇>
委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,则它可以访问该数据并相应地处理它。另一方面,如果本地通知仅标记应用程序图标,并且响应中的用户启动应用程序,则调用application:didFinishLaunchingWithOptions:方法,但选项字典中不包含UILocalNotification对象。