无法在iOS 7上使用Phonegap 3.1的InAppBrowser插件

时间:2013-11-08 11:02:01

标签: ios cordova ios7 inappbrowser

我正在使用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源文件的弃用警告。

我不能为我的生活看到为什么这个插件没被拿起来。其他人可以提出问题的建议吗?

4 个答案:

答案 0 :(得分:25)

我找到了一个真正的解决方案,而无需重新创建项目。根据这个答案:similar question and answer

似乎发生这种情况是因为有时在添加/删除插件后xcode项目文件没有更新。所有文件都已到位,config.xml按顺序排列 xcode项目无法将新插件文件标记为定位应用程序。

enter image description here

解决方案:

  1. 在xcode中打开您的项目
  2. 导航到相关插件文件(CDV * .m文件)
  3. 在右侧菜单的“目标会员”部分下,确保选中了应用程序的复选框。
  4. enter image description here

答案 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之后重新启动,问题就解决了。