【问题标题】:What can I do inside "location" background thread?我可以在“位置”后台线程中做什么?
【发布时间】:2010-07-30 22:38:30
【问题描述】:

为了这个问题,假设我计划为 iOS 4 构建一个谷歌纵横客户端应用程序。 我的应用需要每两分钟上传一次用户 gps 位置,还需要下载用户朋友位置。 - 在后台!

我的应用迫不及待地被蜂窝塔交换机上的操作系统唤醒(因为它们可能仅在 2 公里后发生,而我的应用需要不断更新 gps),所以我知道我可以创建一个线程,类似于GPS导航器使用的那些,在后台运行。

我对 iPhone 编程一无所知,我只需要知道我的应用程序是否可行。

  1. 我是否能够从后台线程中访问互联网(并上传用户 GPS 位置),还是仅限于对 GPS 位置进行采样。 1.
  2. Apple 会批准这样的应用程序,还是禁止这种类型的使用?因为我的应用并不像 gps 导航器那样重要

谢谢!

【问题讨论】:

    标签: iphone ios4


    【解决方案1】:

    正如 Don 所说,iOS 会向支持它的应用发送位置事件。从那里,应用程序可以对位置事件执行所需的操作。

    后台应用可以注册以下三个选项之一:

    1. 仅发生重大变化:一种跟踪位置的低功耗方式,仅在位置发生“重大”变化时才会唤醒应用
    2. 标准定位服务:兼容所有可以使用定位服务的 iOS 设备,允许您指定距离变化,并在后台工作。但是,如果应用已终止或暂停,iOS 将不会尝试重新启动应用。
    3. 持续的位置服务:允许程序接收持续的位置更新,iOS 不会在发送到后台时暂停应用程序。

    更多信息:Executing Code in the BackgroundLocation Awareness Programming Guide

    如果您查看在后台执行代码,Apple 提供了关于多任务感知应用应该做什么和不应该做什么的指南。

    【讨论】:

    • 如果我选择连续定位服务,我会在什么时间间隔更新?我可以为 100 米变化或每 2 分钟注册一次更新吗?它是如何工作的?
    • 您以米为单位指定 distanceFilter。如果手机移动的距离超过了距离过滤器,应用程序将收到一个事件。如果您将 kCLDistanceFilterNone 指定为 distanceFilter,则会收到所有移动的通知。
    【解决方案2】:

    您将在您的应用中收到locationManager:didUpdateToLocation:fromLocation: 消息。在那里,你可以做任何你需要做的事情,但如果你在后台,你不应该更新 UI 或使用 Open GL。

    【讨论】:

    • 我可以在该方法中做任何我想做的事情(即发送坐标到服务器)吗?
    • 是的,你应该可以。不过,我不确定你有多少时间来完成你的任务。
    猜你喜欢
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 2011-03-08
    • 2021-12-29
    相关资源
    最近更新 更多