【问题标题】:Can I send user's current location to server, when app is in background?当应用程序在后台时,我可以将用户的当前位置发送到服务器吗?
【发布时间】:2014-02-26 00:48:04
【问题描述】:

当应用程序在后台时,我可以将用户的当前位置发送到服务器吗? 例如:在我的应用程序中,我想每 2 分钟存储一次用户的当前位置,然后将他的当前位置发送到服务器。当应用程序在后台时我可以这样做吗? 我可以在后台模式下向服务器发送位置更新吗?如何?

【问题讨论】:

    标签: ios iphone ios7 core-location


    【解决方案1】:

    我编写了一个开源项目,它定期从 ios 设备获取位置(也适用于 android、windows phone 和 java me 手机)。它在后台运行良好。我还编写了服务器软件来存储位置并使用谷歌地图显示路线。该项目已完成且正在运行,并且获得了麻省理工学院的许可。它完全符合您的要求:

    https://github.com/nickfox/GpsTracker

    确保您查看 ios 的 phoneClients 目录,以了解我如何定期获取该位置。 ios 客户端项目还使用 AFNetworking,它可以轻松地允许应用使用后台任务从后台向网络服务器发布更新。

    【讨论】:

      【解决方案2】:

      iOS7 以后就可以了。您基本上需要询问两种背景状态:位置和获取。
      在您的应用程序中,您将注册 gps 位置更改,并在每次调用回调时存储它们。然后您将注册:

       application:performFetchWithCompletionHandler:
      

      这通常用于在后台下载文件,但您可以使用它将数据 POST 到网络服务器。请注意,您无法控制此通话的频率。
      要对此进行测试,您可以在 iOS 模拟器中从 Xcode Debug 菜单强制执行 fetch 操作。
      我能够以这种方式成功跟踪用户位置。 您可以在Apple doc 中找到更多信息,您将找到有关后台获取的教程here

      【讨论】:

      • 问题具体是如何每2分钟将用户的位置发送到服务器。由于不能依赖后台获取以固定间隔应用,因此这不能回答 OP 的问题。
      • performFetchWithCompletionHandler 从不调用并处于终止状态我们将如何获取位置
      【解决方案3】:

      在这里很好地介绍了它:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html#//apple_ref/doc/uid/TP40009497-CH9-SW1

      根据授权,您的应用可以在跨区域时被唤醒。不是每两分钟检查一次,而是通常首选跨区域。这可以节省电池电量,因为它允许应用程序大部分时间处于睡眠状态。

      另外,似乎在:How to wake up an app

      不是我的开发领域,只是谷歌搜索。

      【讨论】:

      • 在我的应用程序中,我必须不断跟踪用户位置。我该怎么做?
      猜你喜欢
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 2023-03-14
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多