【问题标题】:Do iOS background limitations allow for http?iOS后台限制是否允许http?
【发布时间】:2012-09-28 15:50:46
【问题描述】:

我想在我的应用程序后台运行一个进程,获取用户当前的纬度/经度(每隔 5 分钟),并通过 Web 服务调用将其报告回我们的服务器。当我将所需的背景模式添加到我的 info.plist 时,我有以下选项:

-App plays audio

-App registers for location updates

-App provides Voice over IP services

现在,在我的情况下,我显然需要列表中的第二个选择,但是一旦我有了位置,我能用它做什么?我可以在后台进行网络服务调用吗?可能还有什么其他限制??

非常感谢!

【问题讨论】:

    标签: ios cllocationmanager background-process multitasking


    【解决方案1】:

    当您的应用程序处于后台模式时,您无法以通常的方式建立 HTTP 连接。您必须设置一个后台任务,将位置更新发送到您的服务器。

    我找到了一个简短的tutorial,它完全涵盖了您正在寻找的内容(我没有测试过代码)。

    这是其工作原理的摘要
    当您的 App 在后台运行并发生位置更改时,iOS 会唤醒您的 App 并调用您的 CLLocationManager 的委托方法 locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation。发生这种情况时,请检查您的应用程序是否在后台运行,如果是则设置后台任务。然后后台任务应该将数据发送到您的服务器。

    限制

    • documentation 不清楚此类后台任务可能需要多长时间才能完成,但我稍微记得最多大约 10 分钟。

    • 据我所知,当您的应用在 背景

    【讨论】:

    • 谢谢! GPS必须无限期开启才能正常工作吗?如果是这样,这会消耗多少电池?
    • 您可以选择仅监控重大的位置变化(它们通常发生在用户从一个蜂窝塔切换到另一个蜂窝塔时),这样可以延长电池寿命,或者您可以使用标准的定位服务保持 GPS 开启,但它会消耗更多电池。您应该选择什么完全取决于您制作的应用程序的类型。如果您构建导航应用程序,则需要尽可能高的准确性,如果您正在构建“附近的兴趣点”之类的内容,则需要进行重大的位置更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多