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

时间:2016-03-21 20:05:30

标签: ios cordova meteor angular-meteor meteor-mobile

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

How to get links to open in the native browser in iOS Meteor apps?

我在其中一个答案中使用了这个来添加inAppBrowser插件

meteor add cordova:cordova-plugin-inappbrowser @ https://github.com/apache/cordova-plugin-inappbrowser/tarball/bc9036d90a1f3f2220b5fc29b77cf2405e7fd781

之后,我的链接在我的机器人上工作,但不在我的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插件,因为我在搜索流星时找不到任何帮助。在cordova inAppBrowser插件自述文件中,我发现了这个:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我开始浏览cordova build文件夹(我认为我不应该在那里改变任何东西,但只是为了弄清楚我环顾四周)。我看到有2个文件夹包含我的项目名称,但其中一个是我用于项目的旧名称(我最近将其重命名)。

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

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