我正在使用Phonegap将我使用Phonegap构建的iOS应用程序移植到带有Phonegap 3.1的iOS7,我遇到了一个小问题。
iOS 7似乎已经发生了一些重大变化,现在默认情况下在应用程序本身内打开target="_blank" attribute
的超链接,而不是在系统浏览器中打开(这似乎不会在Android上发生,或者然而,以前的iOS版本。这打破了应用程序的一些功能,我需要纠正这个问题。
使用InAppBrowser插件似乎是要走的路,所以我已经安装了插件。我修改了我的config.xml以包含这个:
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser" />
</feature>
模板中的链接现在看起来像这样(请注意我在这里使用Handlebars作为模板系统):
<a href="#" onclick="window.externalbrowser = window.open('{{this.url}}, ', '_system', 'location=yes');" data-transition="slide">
<img alt="Favicon" style="border: 1px solid #ccc;" title="Favicon" class="ui-li-icon" src="{{this.favicon_url}}"></img>
<p style="font-size: 100%"><strong>Submitted {{this.whenSubmitted}}</strong><br />Last changed {{this.lastChanged}}</p>
</a>
每当我点击链接时,它都无法打开,我在日志中出现以下错误:
Plugin 'InAppBrowser' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-11-08 10:22:56.753 MyApp[197:60b] -[CDVCommandQueue executePending] [Line 117] FAILED pluginJSON = [
"InAppBrowser814285423",
"InAppBrowser",
"open",
[
"http:\/\/www.site.co.uk\/deals-offers-savings\/b?ie=UTF8&node=350613011&tag=page0e-21,",
"_system",
"location=yes"
]
]
还有一些关于CDVInAppBrowser.m
源文件的弃用警告。
我不能为我的生活看到为什么这个插件没被拿起来。其他人可以提出问题的建议吗?
答案 0 :(得分:25)
我找到了一个真正的解决方案,而无需重新创建项目。根据这个答案:similar question and answer
似乎发生这种情况是因为有时在添加/删除插件后xcode项目文件没有更新。所有文件都已到位,config.xml按顺序排列 xcode项目无法将新插件文件标记为定位应用程序。
解决方案:
答案 1 :(得分:3)
更新 - 在尝试重新创建一个全新的项目之前,尝试下面的barryrowe答案。这是一个简单易用的解决方案,似乎运作良好。谢谢Barry!
删除插件并重新安装后,我多次遇到类似的错误。对我有用的唯一解决方案是重新启动一个全新的应用程序项目,然后从我的'www'文件夹中复制回文件并重做Xcode中的任何必要更改。
看着https://issues.apache.org/jira/browse/CB-4971,这似乎是Cordova团队试图追踪的错误。该链接有一些替代建议,但重新开始仍然可能更容易,除非您的应用程序有很多需要重新完成的自定义Xcode更改。
我对Handlebars并不熟悉,但是你的代码在{{this.url}}
之后看起来有一个额外的逗号和空格。但我认为你的主要问题与插件本身有关,而不是代码。
顺便说一句,如果您使用命令行正确安装了InAppBrowser插件,则无需手动更改config.xml文件,因为必要的插件代码将自动添加到config.xml文件中下次构建项目时的相关平台。
答案 2 :(得分:1)
这很容易解决:
在/plugins/
和/platforms/ios/myApp/Plugins/
文件夹中还应该有一个org.apache.cordova.inappbrowser目录。
它应该看起来像:
-----/org.apache.cordova.inappbrowser
---------/CDVInAppBrowser.h
---------/CDVInAppBrowser.m
答案 3 :(得分:0)
出于某种原因,org.apache.cordova.inappbrowser
似乎无法使用我的应用 - 可能是升级或某些功能破坏了。插件出现在@ star18bit建议中,但我认为我的问题是兼容性。
我删除了现有的插件:
cordova plugin remove org.apache.cordova.inappbrowser
使用cordova-plugin-inappbrowser重新安装:
cordova plugin add cordova-plugin-inappbrowser
在ionic build ios
之后重新启动,问题就解决了。