【问题标题】:How to run a ~30sec process in the background every hour (iphone app)如何每小时在后台运行约 30 秒的进程(iphone 应用程序)
【发布时间】:2011-11-09 15:31:55
【问题描述】:

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

有了ios 4的后台功能,这可能吗?如果是这样,怎么做?我会遇到什么限制?

非常感谢!

【问题讨论】:

标签: iphone ios background


【解决方案1】:

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

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

处理后台任务的方法很少。唯一可以拥有完全后台进程的应用是“audio”、“voip”和“location”应用,这需要在 Info.plist 中声明。

如果您的应用不是这种类型,您可能会发现很难轻松地做自己想做的事。有一些方法可以让您的应用在后台运行一段有限的时间(也在该链接上),但最终您的应用将被关闭。

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

【讨论】:

【解决方案2】:

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

【讨论】:

  • 看起来很吸引人,但我很确定这种 hacky 解决方案会让我立刻被踢出应用商店!
【解决方案3】:

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

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

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

【讨论】:

  • 本地通知允许您从跳板弹出警报消息、更新应用程序图标的徽章编号或播放声音。但它永远不会给你任何机会进行网络 I/O。
  • 嗨,感谢您的信息。我根据以下内容在上面写了。 1. application:didReceiveLocalNotification:参考讨论。他们说它可能是 UILocalNotification 对象包含的任何内容。 2. 在 UILocalNotification 的概述部分:“委托可以检查通知的属性,如果通知在其 userInfo 字典中包含自定义数据,它可以访问该数据并相应地处理它。”....所以我认为 userinfo dict 可以有一个 URL 来调用,如果进程可以在后台进程允许的特定时间内完成,它可以调用它并处理数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2022-01-23
相关资源
最近更新 更多