Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS 8 Beta 2中的Cordova地理定位问题_Javascript_Ios_Cordova_Geolocation_Ios8 - Fatal编程技术网

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

Javascript iOS 8 Beta 2中的Cordova地理定位问题,javascript,ios,cordova,geolocation,ios8,Javascript,Ios,Cordova,Geolocation,Ios8,这更像是一篇信息性文章:过去几天,我一直在为最新的iOS8测试版上的一款不起作用的地理定位应用程序而苦苦挣扎 起初,我不确定它是否与iOS 8隔离,或者它是否是设备与模拟器的问题,但在重新下载XCode 6 Beta 2(我的第一次下载由于某种原因导致模拟器损坏)后,我确认确实,iOS 8 Beta 2模拟器似乎不喜欢我尝试获取地理位置 起初,这个电话似乎根本不起作用;然后,我从includephonegap.js改为includecordova.js,最后取得了一些进展。在这方面的文档很糟糕,

这更像是一篇信息性文章:过去几天,我一直在为最新的iOS8测试版上的一款不起作用的地理定位应用程序而苦苦挣扎

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

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


它不会像预期的那样运行
navigator.geolocation.getCurrentPosition(..)
回调函数,而是挂起,不做任何事情。有时离开页面并返回页面会强制执行错误回调,但这是非常不一致的。在设置了
{timeout:5000}
选项之后,它似乎一直在计时每个调用。控制台没有错误,XCode没有错误,什么都没有。如果我没有在X秒后显式超时,success函数就不会运行,period,错误回调也不会运行。这是一个独立于iOS 8测试版的错误,所以大多数人(现在)都不关心这个问题,但我觉得我应该发布这个错误,以防有人碰到它。我还将在苹果开发中心发布。

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

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

我遇到了相同的问题。My error函数设置为通过IP地址检索位置,因此使用超时仍然有效。但是,我希望这是固定的。你应该提交一份bug报告。我自己还没有测试过,但是我会继续接受这个答案,因为它证实了我刚刚读到的修复。谢谢你的更新!只要在我的钩子中切换插件url就行了。没有什么比操纵Xcode项目更需要的了。是的,我必须将CDVLocation.m添加到我的构建阶段。感谢@onlyureii刚刚证实,如果您将CDVLocation.m添加到“构建阶段”->“编译源代码”将适用于最新的iOS 8(官方发行版,而不是BETA版或RC版),那么它就可以运行了。通过命令行作为插件添加。