如何在Meteor angular ios应用程序中打开外部链接



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

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

我用其中一个答案添加了inAppBrowser插件

流星加科多瓦:cordova-plugin-inappbrowser@https://github.com/apache/cordova-plugin-appbrowser/tarball/bc9036d90a1f3f220b5fc29b77cf2405e7fd781

之后,我的链接在我的安卓系统上运行,但在我的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似乎什么都没用。在安卓系统上一切正常。

我需要为流星中的inAppBrowser做任何额外的设置才能使ios链接正常工作吗?我觉得这应该很简单,但经过几个小时的搜索,我几乎找不到流星,所以也许我找错了地方。

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

我决定研究cordova插件,因为我发现在搜索流星时几乎没有什么帮助。在cordova inAppBrowser插件自述文件中,我发现了以下内容:

"如果你想让应用程序中的所有页面加载都通过InAppBrowser,你可以在初始化期间简单地挂接window.open。例如:"

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

但在我的流星项目中,无论在哪里使用cordova变量,它都是未定义的。这在Meteor中可用吗?如果我需要这样做,为什么它在安卓系统中工作而不这样做?

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

我找到了解决方案。我开始浏览cordova构建文件夹(我想我不需要在那里做任何更改,只是想弄清楚我环顾四周的情况)。我看到有两个文件夹有我的项目名称,但其中一个是我对该项目的旧名称(我最近重命名了它)。

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

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

最新更新