我有一个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应用程序中打开链接还需要做些什么?
答案 0 :(得分:0)
我找到了解决方案。我开始浏览cordova build文件夹(我认为我不应该在那里改变任何东西,但只是为了弄清楚我环顾四周)。我看到有2个文件夹包含我的项目名称,但其中一个是我用于项目的旧名称(我最近将其重命名)。
我意识到当我从meteor进行移动构建时,它不会删除任何旧文件,只会覆盖新构建生成的文件。我在构建中有一些文件夹和文件仍然存在于以前的版本中。所以我删除了整个移动版本而不是覆盖它并重建项目,我的ios链接工作了!
在我构建项目时,xcode看起来像是使用了一些旧文件,而旧的配置没有inAppBrowser,所以它没有工作。