0

我知道这个问题可能有点常见而且问得太多,但我找不到任何准确的信息......所以:

当应用程序处于后台时是否可以运行某种线程,以便我可以与我的 web 服务执行基本同步?

应用程序在后台:我的意思是用户单击主页按钮,或切换到另一个应用程序基本同步:使用 AFNetworking 上传和下载照片。我知道它有在应用程序处于后台时继续 HTTPRequest 的方法,但这不是我的意思。

我的目标是制作某种同步管理器,读取用户在应用程序上创建的要更新的照片列表,并执行这些更改。

我知道管理器可能会被操作系统杀死,但是由于我的服务器使用原子传输,所以这不是问题。我只需要一种重新启动它的方法...推?

我认为谷歌纵横或邮件等应用程序使用我正在寻找的应用程序,但我找不到任何相关细节。并且使用iOS5 不是问题,但等待iOS6 不会是一个解决方案。

谢谢您的回复 !

PS:好吧,我差点忘了。该应用程序是为企业程序设计的,所以规则可能不同?我不认为对内部部署进行任何检查,因此它可能会带来新的可能性......

4

3 回答 3

0

Apple 的 Mail 客户端有一个后台守护程序,可以让它保持运行,但你不能在你自己的应用程序中拥有它。一旦应用程序进入后台状态,它必须停止其操作。您可以在后台请求更多时间以完成任何传输或写入磁盘(请参阅Apple's Multitasking Guide的后台部分中的执行有限长度任务)

谷歌纵横具有基于位置生成的事件。这是 Apple 为某些类型的应用程序引入的一种特殊类型的后台(请参阅Apple 的多任务指南中的实现长时间运行的后台任务部分),但这不能用于 HTTP 同步。它只能用于音频、位置、voip、报摊内容、蓝牙和外部硬件附件。

Push 似乎不是一个解决方案,因为它只会生成警报。在用户触发打开通知之前,它不会触发任何操作。

于 2012-06-21T15:55:40.290 回答
0

您需要阅读技术说明 2277 网络和多任务处理

基本上你有几个选择:

如果您可以说服 Apple 您的应用程序是 VoIP 应用程序,那么您可以注册一个 VoIP 套接字,只要该套接字上有活动,操作系统就会恢复您的后台应用程序。

不过,您的主要选择是为您的应用程序置于后台时必须执行的任何未完成的活动注册一个后台任务。你通常有 10 分钟的时间来完成这项工作。

邮件是一个特殊的应用程序,具有您无法获得的特权。

像纬度这样的应用程序通常会为自己注册位置更新,特别是在发生重大地理位置变化时被唤醒。记录 GPS 轨迹的应用程序会做类似的事情。

于 2012-06-21T16:00:31.670 回答
0

找到了 !

使用Apple's Multitasking Guide 上的Suhail Patel链接,我将voip标签添加到UIBackgroundModesInfo.plist 中,并使用setKeepAliveTimeout:handler:方法UIApplication在应用程序进入睡眠状态后重新启动它。

我希望这对你们有很大帮助!

当然,这个应用程序不会被允许出现在 App Store 上,但对于内部开发,我认为这是最好的方式。

感谢大家为我指明了正确的方向!

于 2012-07-05T12:36:54.067 回答