无法在iOS的后台获取GPS(后台模式插件已启用)

无法在iOS的后台获取GPS(后台模式插件已启用),ios,cordova,ionic-framework,gps,background-process,Ios,Cordova,Ionic Framework,Gps,Background Process,嗨,伙计们,你们能把我从项目的悬崖上救出来吗 背景: 我有一个基于地图模板的爱奥尼亚项目。它所做的是跟踪用户的行走路线,并将其绘制到谷歌地图上 在后台运行的iOS设备上出现问题。我无法正确获取GPS数据。 仅供参考:已安装并设置BackgroundMode插件 场景1:使用cordova插件地理定位插件 它不起作用。关闭屏幕时未采集GPS数据 场景2:将普通JS与navigator.geolocation.getCurrentPosition一起使用 它起作用了。已收集GPS数据,但不正确。

嗨,伙计们,你们能把我从项目的悬崖上救出来吗

背景:

我有一个基于地图模板的爱奥尼亚项目。它所做的是跟踪用户的行走路线,并将其绘制到谷歌地图上

在后台运行的iOS设备上出现问题。我无法正确获取GPS数据。 仅供参考:已安装并设置BackgroundMode插件

场景1:使用cordova插件地理定位插件

它不起作用。关闭屏幕时未采集GPS数据


场景2:将普通JS与navigator.geolocation.getCurrentPosition一起使用

它起作用了。已收集GPS数据,但不正确。数据以某种方式与以前的数据重复(!!)。当我打开时,一切恢复正常 再次启动应用程序

任何想法都会有帮助


使用的插件:
cordova插件背景模式0.6.5
cordova插件customurlscheme 4.1.5
cordova插件设备1.1.1
cordova插件地理定位2.1.0
cordova插件splashscreen 3.2.1
cordova插件状态栏2.1.2
cordova插件白名单1.2.1
爱奥尼亚插件键盘2.0.1


编辑:
目标平台?
iOS 7+和安卓4.1+符合爱奥尼亚的要求

测试设备iOS版本?
iPhone 5上的iOS 9.2(13C75)

您是否在前台测试了应用程序?
是的。为了澄清,以下是更详细的测试:

我有两个测试功能:一个用于gps采集的阵列和一个用于背景模式检查的计数器。两者都在设定的时间间隔内运行

(在iOS上)
前景:
计数器工作,数量增加。
GPS工作,数据被添加到阵列中

背景:
计数器工作,数量增加。

GPS不工作,数据要么没有收集(使用ngCordova地理定位插件),要么奇怪地使用JS navigator复制。地理定位您是否为ios应用程序启用了后台定位模式?在进行构建之前,请检查您的.plist文件,确保您的应用程序已启用“后台模式”,并且“位置服务”已在“后台模式”下选中/列出

还要确保.plist文件包含
NSLocationAlwaysUsageDescription
,否则设备将不会要求
始终
位置使用权限,并且位置仅基于
nslocationwhenuseddescription
可用

更新:
您还需要一个步骤来确保应用程序正确地请求“始终”在后台运行权限

如何:
-在xcode项目中搜索CDVLocation.m文件,然后查找代码块contain
NSLocationAlwaysUsageDescription

-如果存在其他条件,请重新排序,将
NSLocationAlwaysUsageDescription
条件移动到第一行

(可选)

如果您通过ionic cli进行构建,请运行
ionic prepare ios
,然后在xcode中打开项目并确认上述设置,因为它们通常会被cordova插件覆盖,除非您专门为安装后的
和其他事件设置脚本。

您的目标平台及其目标版本是什么:iOS 7,8,9?您的测试设备是什么版本的iOS?你在前台测试过你的应用程序吗?请回答你帖子中的问题。一旦你回答了问题,在评论中回复,这样我知道你已经在帖子中添加了信息。嗨@JesseMonroy650,谢谢你的帮助。是否添加了更详细的内容?是否可以在iOS测试设备上添加版本?9.2和9.3中存在严重的错误。苹果几天前发布了9.3.1,iPhone 5上的9.2(13C75)也是一个暗示。谷歌--“仍然困扰着用户”hi@mani。谢谢我试过了,但没有成功。后台模式运行,但gps数据被复制,正如我在问题中报告的那样。我正在检查@Jessemonroy650注意到的更多iOS版本在完成构建后,在设备/仿真器上,您是否可以转到设置->应用程序名称->位置,并确认权限
允许位置访问
设置为
始终
-以确认您的.plist包含
NSlocationalwaysusagedescription
,并且正在请求并授予正确的位置权限。hi@mani。那正是我应该调查的地方。我已正确运行应用程序。好极了。但是,它是NSLocationAlwaysUsageDescription(驼峰案例);这个问题需要额外的工作,而不仅仅是plist。这是爱奥尼亚公司生成的代码,默认情况下,爱奥尼亚公司只要求GPS允许前台运行。我将写下我问题的答案。再次感谢你的提示,不客气。我会更新答案以备将来参考。