javascript - iOS 8 Beta 2 中的 Cordova 地理定位问题

标签 javascript ios cordova geolocation ios8

这更像是一篇信息性帖子:过去几天我一直在为最新的 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 上发帖。

最佳答案

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

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 添加到项目设置中构建阶段的编译源步骤。

关于javascript - iOS 8 Beta 2 中的 Cordova 地理定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392943/

相关文章:

javascript - 从 ionic Controller 访问 Cordova 插件

javascript - 使用 Node(在 Windows 上)查找 PDF 页数

javascript - 录音机未将控制权返回给phonegap应用

javascript - d3js svg 文本和形状在同一行

ios - 为什么我在工程投诉后用pod添加第三方库?

ios - Facebook sdk 链接或复制到文件夹

ios - 如何在UIScrollView中为键盘实现ResignFirst Responder?

ios - 键盘将整个内容推到黑色背景(cordova+framework7+vue)

javascript - 如何使用 Javascript 或 jQuery 在 div 中呈现 html 代码

Javascript 动态点击