随时了解设备位置将在后台应用

时间:2012-08-01 20:19:18

标签: iphone background cllocationmanager

我正在开发一个应用程序,每隔5分钟让WebService通知设备位置(例如):

因此,当应用程序离开前台执行并进入后台时,我必须为计时器午餐 1 - 更新设备位置 2 - 将位置发送到Web服务

我该如何执行此操作?或者你知道我可以遵循的任何代码例子来实现这个设计吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

看起来没有人给你一个可靠的答案,所以请允许我。

没有iOS批准的方式在后台运行5分钟(或任何分钟)计时器(除非您的应用程序是VOIP或音乐)。您可以做的是将您的应用注册为在后台需要位置服务(编辑info.plist并添加一个必需的背景模式键,然后为应用寄存器添加值以进行位置更新。这意味着您的locationManager:didUpdateToLocation:fromLocation:方法和相应的区域监控/ SLC方法将触发位置更改,但定时器根本不起作用。

原因是定时器需要运行循环(执行代码的线程)才能运行并且必须在该线程上捎带,但是当应用程序在后台时甚至在从LocationManager执行代码时,运行循环执行代码几乎总是在计时器关闭之前完成。

希望这有帮助!

答案 1 :(得分:0)

你不能这样做(在iOS上)。

(除非您的应用请求用于导航应用的权限)

答案 2 :(得分:0)

你好@Aladdin Gallas,

我开发了一个简单的应用程序,支持 Xamarin 中 iOS 和 Android 的后台位置更新。

该应用每 2 秒推送一个新位置(如果需要,您可以将其更改为 5 分钟)。

有一个我无法添加的功能;它是在用户关闭应用程序时保持服务(对于 iPhone)。除此之外,只要应用程序处于打开状态,即使手机被锁定,该服务也会继续运行。

如果有帮助,您可以查看该应用程序作为参考。

GitHub Repo