1

我有一个 Meteor (v 1.2.0.2) 角度移动应用程序,需要有一个指向外部网页的链接,但这些链接无法在 android 或 ios 上打开。经过研究,我从这个问题中发现我可以添加一个名为 inAppBrowser 的cordova插件

如何在 iOS Meteor 应用程序中获取在本机浏览器中打开的链接?

我从答案之一中使用它来添加 inAppBrowser 插件

流星添加cordova:cordova-plugin-inappbrowser@ https://github.com/apache/cordova-plugin-inappbrowser/tarball/bc9036d90a1f3f2220b5fc29b77cf2405e7fd781

之后,我的链接在我的 android 上有效,但在我的 ipad 上无效。

这是我的html

<a ng-click="adClick(pageAd.link, pageAd._id)">
    <img ng-src="/images/ads/{{pageAd.src}}" alt="{{pageAd.alt}}" />
</a>

和我的控制器中的功能

$scope.adClick = function(url, adId)
{
  $meteor.call("incrementAdCount", adId).then(
    function(data){
      window.open(url, "_system");
    },

    function(error) {

    }

  );

}

在 ipad 上,每次单击时我的广告计数方法都有效,但 window.open 似乎没有做任何事情。在android上一切正常。

我需要为流星中的 inAppBrowser 进行任何其他设置才能使 ios 链接正常工作吗?我觉得它应该很简单,但经过数小时的搜索,我几乎找不到任何关于流星的东西,所以也许我找错了地方。

我还尝试使用 angular $window.open,它也适用于 android 但不适用于 ios。

我决定研究cordova插件,因为在搜索meteor时我找不到什么帮助。在cordova inAppBrowser 插件自述文件中,我发现了这个:

“如果您希望您的应用程序中的所有页面加载都通过 InAppBrowser,您可以window.open在初始化期间简单地挂钩。例如:”

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    window.open = cordova.InAppBrowser.open;
}

但是我在我的流星项目中使用cordova变量的任何地方,它都是未定义的。这甚至在 Meteor 中可用吗?如果我需要这样做,为什么不这样做就可以在 android 中工作?

我的主要问题是我还需要做什么才能在移动 ios 应用程序中打开链接?

4

1 回答 1

0

我想出了解决方案。我开始浏览cordova build 文件夹(我想我不需要在那里更改任何东西,只是为了弄清楚我环顾四周的东西)。我看到有 2 个文件夹带有我的项目名称,但其中一个是我为该项目使用的旧名称(我最近重命名了它)。

我意识到,当我从流星进行移动构建时,它不会删除任何旧文件,只会覆盖新构建生成的文件。我在构建中有一些文件夹和文件在以前的构建中仍然存在。所以我删除了整个移动版本,而不是仅仅覆盖它并重建了项目,我的 ios 链接工作了!

看起来 xcode 在我构建项目时使用了一些旧文件,而旧配置没有 inAppBrowser 所以它不起作用。

于 2016-03-22T17:34:49.167 回答