【问题标题】:Cordova Geolocation Issues in iOS 8 Beta 2iOS 8 Beta 2 中的 Cordova 地理定位问题
【发布时间】:2014-08-15 02:06:57
【问题描述】:

这更像是一篇信息性帖子:过去几天我一直在为最新的 iOS 8 Beta 上的非功能性地理定位应用程序苦苦挣扎。

起初我不确定它是否与 iOS 8 隔离,或者是否是设备与模拟器的问题,但在重新下载 XCode 6 Beta 2 后(我的第一次下载由于某种原因模拟器损坏) ,我确认确实,iOS 8 Beta 2 模拟器似乎不喜欢我尝试获取地理位置。

起初通话似乎根本不起作用;然后我从包含phonegap.js更改为包含cordova.js,终于取得了一些进展。文档在这方面很糟糕,因为官方文档中的以下指南似乎让人相信它们是可以互换的。我建议有问题的人先检查一下。

它不会像预期的那样运行navigator.geolocation.getCurrentPosition(....) 回调函数,而是挂起并且根本不做任何事情。有时离开页面并返回它会强制错误回调,但它非常不一致。设置{ timeout: 5000 } 选项后,似乎每次通话都会超时。控制台没有错误,XCode 没有错误,什么都没有。如果我没有在 X 秒后显式超时,那么成功函数就不会运行,周期,错误回调也不会。这是一个与 iOS 8 Beta 隔离的错误,所以大多数人(还)都没有担心,但我觉得我应该发布这个以防有人遇到它。我也会在 Apple Dev Center 上发帖。

【问题讨论】:

  • 我遇到了同样的问题。我的错误函数设置为通过 IP 地址检索位置,因此使用超时仍然 sorta 有效。然而,希望这个固定。您应该提交错误报告。

标签: javascript ios cordova geolocation ios8


【解决方案1】:

这是一个已知问题,已在此处修复:

https://github.com/apache/cordova-plugin-geolocation/commit/4102a332b0c6b0c3513370a4c030a32e46a51e10#commitcomment-7791523

刚刚在iOS8中测试过,可以的。

在您的 phonegap 项目的 platforms/ios 文件夹中运行以下命令:

cordova plugin rm org.apache.cordova.geolocation
cordova plugin add https://github.com/apache/cordova-plugin-geolocation.git   

由于某种原因,它从编译列表中删除了 CDVLocation.m,您需要恢复它。

XXX.xcodeproj/project.pbxproj 中的条目:

979B00CA27D6412CB8C6CF74 /* CDVLocation.m in Sources / = {isa = PBXBuildFile; fileRef = E3B4F7C4AF8242A09E9BF8C1 / CDVLocation.m */; };
979B00CA27D6412CB8C6CF74 /* CDVLocation.m in Sources */,

没有这两行,插件就无法在应用中使用。

如果您在源代码管理中拥有该文件,只需恢复 XXX.xcodeproj/project.pbxproj 中与 CDVLocation.m 相关的删除。

如果没有尝试将 CDVLocation.m 添加到项目设置中构建阶段的编译源步骤。

【讨论】:

  • 我自己没有对此进行测试,但我会继续接受这个答案,因为它证实了我刚刚读到的修复。感谢您的更新!
  • 只需在我的钩子中切换插件网址即可。没有什么比操作 Xcode 项目更需要的了。
  • 是的,必须将 CDVLocation.m 添加到我的构建阶段。谢谢@onlyurei
  • 我只是证实,如果您将添加 CDVLocation.m 添加到“构建阶段”->“编译源”将适用于最新的 iOS 8(官方版本,而不是 BETA 或 RC)
  • 刚刚试了一下,它可以工作。通过命令行作为插件添加。
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多