11

我正在将使用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

4 回答 4

26

我找到了一个真正的解决方案,而无需重新创建项目。基于这个答案:类似的问题和答案

似乎发生这种情况是因为有时 xcode 项目文件在添加/删除插件后没有更新。所有文件都已就位,并且 config.xml 是有序的,但 xcode 项目无法将新插件文件标记为针对应用程序。

在此处输入图像描述

解决方案:

  1. 在 xcode 中打开你的项目
  2. 导航到有问题的插件文件(CDV*.m 文件)
  3. 在右侧菜单的“目标会员”部分下,确保选中您的应用程序的复选框。

在此处输入图像描述

于 2014-08-07T15:29:33.260 回答
3

更新 - 在重新创建一个全新的项目之前,请尝试下面的 barryrowe 的答案。这是一个简单、易于遵循的解决方案,看起来效果很好。谢谢巴里!

删除插件并重新安装后,我多次遇到类似的错误。唯一对我有用的解决方案是重新开始一个全新的应用程序项目,然后从我的“www”文件夹中复制回文件,并在 Xcode 中重做任何必要的更改。

查看https://issues.apache.org/jira/browse/CB-4971似乎这是 Cordova 团队试图追踪的错误。该链接有一些替代建议,但重新开始可能仍然更容易,除非您的应用程序有很多需要重新完成的自定义 Xcode 更改。

我对 Handlebars 不是很熟悉,但是您的代码看起来在{{this.url}}. 但我认为您的主要问题与插件本身有关,而不是代码。

顺便说一句,如果您已经使用命令行正确安装了 InAppBrowser 插件,则无需手动更改 config.xml 文件,因为必要的插件代码将自动添加到相关的 config.xml 文件中下一次构建项目时的平台。

于 2013-11-20T16:06:40.000 回答
1

这是一个简单的修复:

/plugins/您的和文件夹中还应该有一个 org.apache.cordova.inappbrowser 目录/platforms/ios/myApp/Plugins/。它应该看起来像:

-----/org.apache.cordova.inappbrowser
---------/CDVInAppBrowser.h
---------/CDVInAppBrowser.m
于 2014-08-18T01:03:36.570 回答
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,问题得到解决。

于 2015-12-02T04:15:52.013 回答