欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何在 iOS 应用中添加位置信息

程序员文章站 2022-03-10 13:05:42
最近要在 ios 应用中添加位置信息, 需要满足的需求如下: 应用在前台时能够获取位置信息; 通过切换、 home 按键将应用切换到后台时,停止获取位置信息; 应用程序在前台运行, 直接锁定屏幕...

最近要在 ios 应用中添加位置信息, 需要满足的需求如下:

  • 应用在前台时能够获取位置信息;
  • 通过切换、 home 按键将应用切换到后台时,停止获取位置信息;
  • 应用程序在前台运行, 直接锁定屏幕时,能够继续获取位置信息;

接下来逐步实现这三个需求。

获取设备位置信息

在 ios 上获取位置信息是很容易的, 网上的资料也很多, 我的代码如下:

第一次运行时, 系统会弹出应用要使用位置的对话框, 点击确认即可。

在锁屏情况下继续更新 gps 信息

当程序运行时, 用户直接锁定屏幕, 会调用 appdelegate 的 didenterbackground 方法, 但是对于 ios 应用来说, 用户切换程序或者点击 home 按钮是, 也会调用这个函数, 这两种操作的区别在当前应用实例(uiapplication)的状态, 当用户切换程序或者点击 home 按钮时, 应用的状态是 uiapplicationstatebackground , 而锁定屏幕时, 应用状态是 uiapplicationstateinactive , 使用下面的代码可以区分这两种情况:

对于锁屏情况下继续更新位置信息的需求, 就很容易达到了, 只要在 didenterbackground 函数中检查应用的状态, 当状态为 uiapplicationbackground 是才停止更新位置, 代码如下:

注意: 根据 apple 的文档, didenterbackground 函数大约有 5 秒钟的执行时间, 如果超过 5 秒钟还没有从这个函数返回, 应用将会异常退出, 因此不要再这个函数中进行耗时的操作。

当应用切换到前台或者解锁时, 会调用 appdelegate 的 willenterbackground 方法, 只要在这个方法中继续更新位置即可:

注意: 同样, willenterforeground 大约有 5 秒钟的执行时间, 因此也不要在这个函数中进行耗时的操作。

为应用添加后台位置权限

要真正能在锁屏状态下继续更新位置, 需要修改 info.plist ,增加后台位置权限。 找到项目中的 info.plist 文件, 双击打开, 并切换到 source 标签, 如下图所示:

如何在 iOS 应用中添加位置信息

然后添加 required background modes 属性项, 并将这个属性类型设置为 array , 并为这个属性添加一个子项 location-based information , 最终如下图所示:

如何在 iOS 应用中添加位置信息

也可以直接把下面的代码添加到 info.plist 文件中, 效果是一样的。

以上就是如何在 ios 应用中添加位置信息的详细内容,更多关于ios 应用中添加位置信息的资料请关注其它相关文章!