【问题标题】:iphone: backgrounded app sync webserviceiphone:后台应用同步网络服务
【发布时间】:2012-06-21 15:31:10
【问题描述】:

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

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

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

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

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

我认为 Google Latitude 或 Mail 等应用程序使用了我正在寻找的内容,但我找不到任何相关详细信息。而且用iOS5没问题,等iOS6也不行。

感谢您的回复!

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

【问题讨论】:

    标签: iphone ios5 asynchronous background in-house-distribution


    【解决方案1】:

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

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

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

    【讨论】:

    • 好吧,这很不酷,即使我理解他们这样做的原因。但是 Sparrow 邮件应用程序如何工作?哦,再一次,我可以忘记内部部署的那些限制吗?我的意思是在内部,没有越狱,没有临时性。谢谢
    • Sparrow 也因此没有后台模式。但是,由于您没有部署到应用商店,您可以将其伪装成 VOIP 应用并使用它的相关套接字方法? (这是 Sparrow 尝试做的,但被 App Store 拒绝)sparrowmailapp.com/push.php
    • 哎呀,我找了这个页面,但没有找到.... 把它伪装成一个 VOIP 应用程序有那么容易吗?我不能创建一个守护进程或其他东西吗?目标是在特定的地方拍照,然后在回家的路上上传。也许地理服务可以提供帮助?再次感谢您
    【解决方案2】:

    你会想阅读Tech Note 2277 Networking and Multitasking

    基本上你有几个选择:

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

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

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

    诸如“纵横”之类的应用通常会自行注册以获取位置更新,特别是在地理位置发生重大变化时被唤醒。记录 GPS 轨迹的应用会做类似的事情。

    【讨论】:

    • 答案也很好。但同样,由于我正在进行内部部署,这意味着苹果无法告诉我“不”,我有新的选择吗?
    • 我可能想使用 GPS 事件,但是如何根据地理位置事件在我的应用中触发某些操作?我找不到这个特定信息是 SDK 文档集。抱歉,如果这是一个新手问题...
    【解决方案3】:

    找到了!

    使用 Suhail Patel 的 link on Apple's Multitasking Guide 我将 voip 标签添加到 Info.plist 中的 UIBackgroundModes 并使用 UIApplicationsetKeepAliveTimeout:handler: 方法在应用程序进入睡眠状态后在需要时重新启动它。

    希望对大家有帮助!

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多