如何每小时在后台运行~30秒进程(iphone app)

时间:2011-09-03 07:39:24

标签: iphone ios background

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

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

非常感谢!

3 个答案:

答案 0 :(得分:6)

查看Apple关于在后台运行代码的文档。

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

接近后台任务的方法很少。唯一可以完全后台处理的应用程序是“音频”,“voip”和“位置”应用程序,这需要在Info.plist中声明。

如果您的应用不属于此类型,您可能会发现很难轻松完成您想要的操作。有一些方法可以让您在有限的时间内(也在该链接)保持您的应用程序在后台运行,但最终您的应用程序将被关闭。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我相信使用本地通知会有所帮助...... 检查以下....

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

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

    4.