Captive-WLAN-Popup: Klicken Sie auf einen link zu öffnen in Safari
Wir haben ein Problem in unserem Netzwerk, die mit iOS-Geräten (ipads, iPhone etc.): Nachdem Sie eine Verbindung mit der SSID, die iphone /ipad öffnet sich sofort der Captive Network Assistant (CNA) - es ist wie eine abgespeckte browser ohne Navigations-Tasten, etc. - das zeigt unsere willkommen-Seite (bereit für den Benutzer zu authentifizieren seinem MAC in das Netz, um ihm Internetzugang). Das CNA ist eine functin von iOS, und geschieht automatisch.
Ich war auf der Suche rund um auf dieses forum zu machen, wie der Benutzer öffnet seinen browser Safari durch klicken auf einen link (während die CNA), so senden Sie ihn Weg von der CNA und in Safari (das ist, wo ich würde lieber ihm zu sein).
Suchte ich Sätze wie: "Wie setzen Sie einen link zu öffnen in safari", aber ich bekomme die Ergebnisse über Menschen mit phonegap zu tun ist so eine Sache...
Ein user Sprach über die Verwendung von
Fenster.open(myURL, '_system')
aber ich weiß nicht, wenn das die Lösung meines Problems.
Im Grunde ist mein plan:
- Meine Startseite (die Seite, die angezeigt wird, nachdem der Benutzer verbunden mit meiner SSID) erkennen, welche Art von browser auf dem Gerät des Benutzers hat. Meine Willkommen-Seite wird gehostet auf einer Website, die in der Ummauerten Garten von meinem controller, so dass jedes Gerät kann sehen, dass die Seite "Willkommen" (ob Sie den vollen internet-Zugang oder nicht).
- Hat der Benutzer ein iOS-Gerät, das CNA-browser öffnet sich automatisch. Mein controller erkennt das Gerät verfügt über eine CNA-browser und lädt eine einfache Seite mit der Meldung (möchten): "klicken Sie hier, um zu navigieren"
- Während der nächsten paar Sekunden (während der Benutzer ist verdauen der Nachricht), mein controller gibt dem Benutzer die MAC-full internet access
- Klickt der Benutzer diesen link in die CNA-browser, der CNA schließt und öffnet dann Safari, und auch Kräfte in Safari öffnen Sie die Ziel-Seite Willkommen (wo ich möchte, dass meine Benutzer, abhängig von der Antenne, an die er angeschlossen ist).
Ich hoffe wirklich, dass alle Sinn macht...
Fand ich diesen link über die CNA-browser in diesem forum:
Umgeht Apple-Captive Network Assistant Login in iOS 7
Aber es spricht dass der Benutzer öffnen Sie Safari von Anfang an (Deaktivierung des CNA-Funktion), "Hoffnung", dass der Benutzer öffnet Safari (eher dann gehen, direkt zu einem seiner apps). Ich bevorzuge, dass der user "klicken, um fortzufahren", wodurch Safari öffnen und er sieht meine Seite Willkommen.
- Korrigieren Sie mich, wenn ich falsch Liege, aber ich glaube nicht, dass dies überhaupt möglich ist. In der Regel ist die einzige app öffnen dürfen durch eine browser-Aktion ist entweder die Mail oder den Standard-Browser. Sonst, könnten die Menschen nur zufällig andere zu zwingen, öffnen Sie Anwendungen einfach, weil Sie besucht eine Webseite.
- Ich Frage mich, ob ich es jemals gesehen hat. Mein Ziel ist es, die gleiche Sache, aber gut... ich sehe schon, es funktioniert. Ich denke Nein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Extrahiert aus einer Antwort von Ryan am Wie kann ich einen externen link in Safari nicht die app UIWebView?
Einen speziellen link wechseln Sie in Safari, fügen Sie einfach target="_system", um den link, wie in
Oder zu fangen Sie alle links in Ihrem javascript-Code, haben target="_blank" gehören jQuery und übergeben Sie an Fenster.öffnen Sie mit der '_system' param. Dies funktioniert auf beiden iOS und Android.
Javascript funktioniert NICHT vollständig in CNA, ist es aus Sicherheitsgründen deaktiviert.
target="_system" ist ein safari feature, nicht ein CNA ein.
==> kurz, _system scheitert in der CNA.
BEARBEITEN : diese Lösung funktioniert nicht, nachdem die iOS-10.3. Nicht sicher, ob das ein feature oder ein bug : https://forums.developer.apple.com/thread/75498
EDIT2 : Anscheinend funktioniert es wieder auf iOS 11
Gibt es einen einfachen Weg, das zu tun, wenn Sie haben die Kontrolle über die captive portal-server.
Wenn eine Verbindung zu einem wifi-Netzwerk, iOS-Geräte senden einen GET-request an eine Reihe von vordefinierten urls (
http://www.apple.com/library/test/success.html
, ...) , um zu sehen, ob es Internet-Konnektivität (wispr-Anfragen). Das iOS-Gerät erwartet, dass die Antwort<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>
. Wenn die Anforderung erfolgreich ist, aber die Antwort ist anders (z.B. captive portal-Seite), löst die CNA zu öffnen.In dieser Phase, die CNA denkt, Sie sind nicht miteinander verbunden und zeigen ein
Cancel
Taste an der Oberseite. Jeder link öffnet sich im inneren des CNA und nicht in einem Safari-Fenster, egal, was Sie tun. Die CNA ist fertig, so dass Sie können Ihre Benutzer über die log-in-Prozess. Um zu sehen, ob die log-in-Vorgang abgeschlossen ist und die Verbindung schließlich aufgebaut, das iOS-Gerät wird jetzt und senden Sie dann eine andere wispr Anfrage. Dies passiert alle 40 Sekunden, oder wenn eine HTTP-Anforderung wird ausgegeben (navigation innerhalb der CNA).Wenn Ihr server endlich Antworten
Success
zu einem wispr Anfrage, die CNA markierenconnected
, die oben auf die Schaltfläche ändern inDone
. In dieser Phase, jeder link zu einer externen url wird in der Nähe der CNA und öffnen in Safari 🙂Also zusammenfassen, können Sie das erreichen, was Sie wollen, mit den folgenden Anschluss vor :
<script>window.location.reload(true)</script>
dies löst das iOS-Gerät, um sofort zu senden Sie eine weitere wispr Anfrage<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>
, dies löst den CNA zu markieren, wie verbunden