2017-12-25 11 views
0

Ich habe ein Cordova-Projekt, das für Android und iOS kompiliert wird. Ich habe einige Links darin, die eine Website im System-Browser öffnen, z.B .:Cordova iOS kann keine Links öffnen

window.open('https://example.com', '_system'); 
cordova.InAppBrowser.open('httos://example.com', '_system'); 

Dies funktioniert auf Android in Ordnung, aber es passiert nichts auf iOS, nicht einmal '_blank'.

Ich habe auch versucht, die inappbrowser Plugin (https://github.com/apache/cordova-plugin-inappbrowser) wie andere empfohlen, aber nichts geändert, wenn ich das implementiert.

Haben Sie Ideen, wie Sie Links im Systembrowser auf iOS öffnen? Jede Quelle bei Google sagt nur, fügen Sie das inappbrowser Plugin, oder einfach '_system' (aber das ist, was ich getan habe!).

Ich glaube nicht, dass es ein Problem mit meiner Whitelist ist, da es gut auf Android funktioniert, und meine App kann Ressourcen gut aus dem Internet auf iOS auch laden. Alles funktioniert außer dem Öffnen von Links auf iOS.

UPDATE: Aufruf cordova.InAppBrowser.open() funktioniert, wenn vom OnDeviceReady-Ereignis aufgerufen wird, funktioniert aber nicht außerhalb des Ereignisses. Ich habe sogar versucht window.open einzustellen, aber das hat nicht funktioniert.

+0

zeigen Sie Ihren Code. Versuchen Sie es auch mit 'cordova.InAppBrowser.open' anstelle von' window.open''. – jcesarmobile

+0

Ich habe es bereits versucht, nichts funktioniert. Und ok, ich habe meine Frage mit diesem Beispiel aktualisiert. – TheRyan722

+0

Es scheint ein Problem mit Cordova zu sein, und ich bin mir nicht sicher, wie ich es beheben soll. Wenn ich cordova.InAppBrowser.open() aus dem Ondeviceready-Ereignis heraus aufrufen, funktioniert es, aber außerhalb davon ist es nicht. – TheRyan722

Antwort

0

Nach einigen rücksichtslosen Graben auf einigen Foren, fand ich diesen Beitrag auf den ionischen Foren: https://forum.ionicframework.com/t/cordova-inappbrowser-plugin-stopped-working-in-ios-10/64361/9

Durch meinen Content Security Policy zu ändern zu:

<meta http-equiv="Content-Security-Policy" content="img-src * 'self' data:; default-src * 'self' gap: wss: ws: ; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval';"> 

Es hat funktioniert! Ich möchte jedoch besser verstehen, warum dieser CSP im Gegensatz zu dem allgemein empfohlenen "gap: // ready" funktioniert, das jeder zu nutzen meint.

+0

'gap:' ist das Protokoll, das für die native Kommunikation in Cordova iOS-Apps verwendet wird. Soweit ich weiß, ist 'gap: // ready' die einzige URL, die für die Kommunikation verwendet wird. Es ist also egal, ob Sie' gap: // ready' oder 'gap:' verwenden, beide sollten funktionieren. Ich bevorzuge 'lücke:' und das ist die, die in der Cordova Vorlage App verwendet wird, die Sie erhalten, wenn Sie eine neue App erstellen – jcesarmobile

Verwandte Themen