Phonegap / Cordova在iOS8上无法工作。

5

我尝试使用iOS 8 beta,发现Cordova/Phonegap几乎无法正常使用。

对我来说,主要是InAppBrowser无法显示。

你有类似的经历吗?你有解决方法或想法吗?

谢谢。


3
由于今天刚发布(处于测试版预览阶段),而 Cordova 是一个开源项目:请等待社区发布相关信息。我相信在未来几个月中会发布一个版本来解决与 iOS8 的兼容性问题。如果你遇到了具体问题,请直接向 Cordova/Phonegap 发布问题以帮助他们解决问题。 - Dawson Loudon
4个回答

12
您可以通过在index.html文件中添加一些JavaScript代码来解决这个问题(或者安装iOS 8 beta 2,该版本似乎已经修复了此问题):https://gist.github.com/EddyVerbruggen/cd02c73162180793513e#file-ios8-beta-phonegap-fix
// temp fix for iOS8 beta, add it after the reference to cordova.js
// You don't actually require it for ios 8 beta 5
if (navigator.userAgent === undefined) {
  navigator.__defineGetter__('userAgent', function() {
    return("Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit");
  });
}

官方 Cordova 缺陷报告请点击此处。修复方法:https://git-wip-us.apache.org/repos/asf?p=cordova-js.git;a=commitdiff;h=2ae3caa;hp=d970db70850a22b2001bc222f8ad6fff45a321fd - smithclay
似乎在iOS 8 beta 2中已经修复 :) - Eddy Verbruggen

7
在早期的iOS 8测试版中,由于用户代理错误,Cordova/Phonegap应用程序无法正常工作,但根据iOS 8 Beta发布说明(WebKit部分),这个错误已经在iOS 8 Beta 3中得到了官方修复。(实际上,在iOS 8 Beta 2中就已经修复了。)
很高兴看到苹果公司测试了Cordova/Phonegap应用程序并修复了这个问题。有点令人失望的是,这个错误本来就存在,但早期测试版总是会有很多问题。

很高兴看到苹果已经测试了Cordova/Phonegap应用程序。如果这个错误没有被报告,他们可能不会注意到:https://bugs.webkit.org/show_bug.cgi?id=128303(事实上,在iOS 8 beta发布之前就已经报告了,但只有在iOS 8 b2中才得到修复)。 - radex
还要注意的是,这个问题实际上在beta 2中已经被修复了。发布说明是错误的 :) - radex
非常正确。已经相应地更新了发布说明部分。我试图给苹果一个机会,但如果他们实际上进行了一些 Cordova 测试,这是一个如此严重的错误,应该立即修复。我仍然在与 iOS 7 引入的一些 WebKit 渲染错误斗争,这确实让 Cordova 开发对我来说很头疼,所以苹果可能根本不测试 Cordova 应用程序。我想这只是一厢情愿。 - wicketyjarjar
很可能 :) 这一点并不让我感到惊讶 - 他们自然希望推动完全本地的应用程序,以便与竞争对手的操作系统区分开来。我觉得他们真的不在乎 Cordova。但是 Cordova 应用程序中的错误是 WebKit 中的错误,这些错误会被(最终)修复。 - radex

7

一个普通的cordova示例应用程序(例如“cordova create test”)将正常加载。

如果您添加任何cordova插件,您将在“iOSExec()”中遇到问题,请参见“platform_www/cordova.js”:

bridgeMode = navigator.userAgent.indexOf(' 5_') == -1 ? jsToNativeModes.IFRAME_NAV: jsToNativeModes.XHR_NO_PAYLOAD;

把它改成:
bridgeMode = jsToNativeModes.IFRAME_NAV;

您可以再次使用插件。这将破坏与iOS 5的向后兼容性,但我怀疑今天会有人在运行iOS 5和cordova...

如果您正在使用fastclick.js或backbone.js,您也需要进行一些小的修改。 只需按照Safari Web Inspector中的错误消息即可。


需要在Backbone和FastClick中进行哪些更改?您能详细说明一下吗? - dead_soldier

1

将XCode更新到Beta 2版本,无需任何修复即可正常工作(已使用cordova 3.5.0进行测试)。

您需要从iOS Dev Center下载新版本的XCode,因为Beta版尚未提供自动更新功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接