2016-03-21 8 views
0

Ich habe eine meteor (v 1.2.0.2) eckige mobile App und muss einen Link zu einer externen Webseite haben, aber die Links würden nicht auf Android oder iOS öffnen. Nach der Untersuchung fand ich von dieser Frage, dass ich ein cordova Plugin inAppBrowserWie öffne ich einen externen Link in einer meteor eckigen iOS-App?

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

ich verwendet, um dieses von einem der Antworten genannt hinzufügen könnte das inAppBrowser Plugin

Meteor hinzufügen cordova hinzuzufügen: cordova-Plugin -inappbrowser @https://github.com/apache/cordova-plugin-inappbrowser/tarball/bc9036d90a1f3f2220b5fc29b77cf2405e7fd781

Danach arbeitete mein Link auf meinem Android, aber nicht auf meinem iPad.

Hier ist mein html

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

und die Funktion in meinem Controller

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

    function(error) { 

    } 

); 

} 

auf dem iPad meine Anzeige Zählverfahren funktioniert scheint jedes Mal, dass ich auf, aber die window.open nicht etwas tun. Auf Android funktioniert alles.

Gibt es irgendwelche zusätzliche Einstellungen, die ich für den inAppBrowser in meteor machen muss, damit der ios Link funktioniert? Ich habe das Gefühl, dass es einfach sein sollte, aber nach stundenlanger Suche kann ich für Meteor fast nichts finden, also schaue ich vielleicht an den falschen Stellen.

Ich habe auch versucht, die eckige $ window.open, die auch auf Android, aber nicht ios gearbeitet.

Ich entschied mich, das Cordova-Plugin zu recherchieren, da ich bei der Suche nach Meteor wenig Hilfe fand. Im cordova inAppBrowser Plugin Readme fand ich dies:

„Wenn Sie alle Seitenlasten in Ihrer App durch die InAppBrowser gehen möchten, können Sie einfach window.open während der Initialisierung kann der Haken Zum Beispiel:“

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

Aber überall, wo ich die Cordova-Variable in meinem Meteorprojekt verwende, ist sie undefiniert. Ist das überhaupt in Meteor verfügbar? Und wenn ich das tun müsste, warum hat es bei Android funktioniert, ohne es zu tun?

Meine Hauptfrage ist, was muss ich tun, um einen Link in einer mobilen iOS-App zu öffnen?

+0

Haben Sie dies in Ihrer Konfig

+0

@SteveKennedy Also Meteor baut die Konfigurationsdatei für Sie basierend auf Ihren Paketen, konnte ich nicht finden, was Sie genau erwähnt, aber In einer config.xml-Datei, die im mobilen Build generiert wurde, habe ich dieses Tag gefunden: pope12

Antwort

0

Ich fand die Lösung. Ich fing an, den cordova build-Ordner durchzugehen (ich dachte, ich sollte dort nichts ändern müssen, aber um das herauszufinden, schaute ich mich um). Ich sah, dass es zwei Ordner mit meinem Projektnamen gab, aber einer war ein alter Name, den ich für das Projekt hatte (ich habe es kürzlich umbenannt).

Ich erkannte, dass wenn ich ein mobiles Build von Meteor mache löscht es keine alten Dateien, nur überschreibt Dateien, die der neue Build generiert. Ich hatte einige Ordner und Dateien im Build, die von früheren Builds noch da waren. Also löschte ich den gesamten mobilen Build, anstatt ihn einfach zu überschreiben und das Projekt neu aufzubauen, und mein iOS-Link funktionierte!

Es sieht so aus, als ob xcode einige der alten Dateien benutzt hat, als ich mein Projekt erstellt habe, und die alte Konfiguration hatte nicht den inAppBrowser, also hat es nicht funktioniert.

Verwandte Themen