Captif Wifi le menu Contextuel: Cliquez sur un lien pour ouvrir Safari
Nous avons un problème sur notre réseau avec les appareils iOS (ipad, iphone, etc): Après la connexion au SSID, l'iphone /ipad ouvre immédiatement la Captivité de l'Assistant Réseau (CNA) - c'est comme une échelle réduite par navigateur sans boutons de navigation, etc - qui affiche notre page d'accueil (prêt pour l'utilisateur de s'authentifier son MAC dans le réseau afin de lui donner de l'internet). Cette AIIC est une functin de iOS, et se fait automatiquement.
Je regardais autour de moi sur ce forum comment faire de l'utilisateur ouvre son navigateur Safari en cliquant sur un lien (dans l'ANC), donc en l'envoyant loin de l'ANC et dans Safari (c'est là que je lui préfère l'être).
J'ai cherché des phrases telles que: "Comment mettre un lien pour l'ouvrir dans safari", mais j'obtiens des résultats sur les personnes à l'aide de phonegap pour faire une telle chose...
Un utilisateur a parlé de l'utilisation de
de la fenêtre.ouvert(myURL, '_system')
mais je ne sais pas si c'est la résolution de mon problème.
Fondamentalement, mon plan est de:
- Avoir ma Page d'Accueil (page qui s'affiche après que l'utilisateur s'est connecté à mon SSID) de détecter quel type de navigateur de l'utilisateur de l'appareil a. Ma Page d'Accueil est hébergé sur un site qui est dans le Jardin clos de murs de mon contrôleur, de sorte que chaque appareil peut voir que la page d'Accueil (qu'ils aient plein accès à l'internet ou non).
- Si l'utilisateur dispose d'un appareil iOS, l'AIIC navigateur s'ouvre automatiquement. Mon contrôleur détecte l'appareil dispose d'un CNA navigateur et les charges d'une simple page avec le message (comme): "cliquez ici pour commencer à naviguer"
- Au cours de la prochaine quelques secondes (alors que l'utilisateur reçoit le message), mon contrôleur permet à l'utilisateur de MAC d'un accès internet complet
- Lorsque l'utilisateur clique sur un lien dans l'AIIC navigateur, l'ANC ferme puis ouvre Safari, et aussi les forces de Safari pour ouvrir la destination Page d'Accueil (où je veux que mon utilisateur, en fonction de l'antenne à laquelle il est connecté).
J'espère vraiment que tout fait sens...
J'ai trouvé ce lien sur la CNA navigateur dans ce forum:
Contourne Apple en Captivité Réseau Assistant de Connexion dans iOS 7
Mais il parle d'avoir à l'utilisateur d'ouvrir Safari dès le début (la désactivation de la fonction de l'AIIC), "espérant" que l'utilisateur ouvre Safari (plutôt que d'aller directement à l'un de ses applications). Je préfère que l'utilisateur doit "cliquez pour continuer", ce qui rend Safari ouvre et il voit ma Page d'Accueil.
- Corrigez-moi si je me trompe, mais je ne pense pas que cela est possible à tous. Habituellement, la seule application a permis d'ouvrir en raison d'un navigateur d'action est soit la Messagerie ou le Navigateur par Défaut. Sinon, les gens pourraient simplement au hasard de forcer les autres à ouvrir les applications, tout simplement parce qu'ils ont visité une page web.
- Je me demande si j'ai jamais vu ça. Je cherche la même chose, mais bon... Ai-je déjà le voir travailler. Je crois que non.
Vous devez vous connecter pour publier un commentaire.
Extrait de la réponse de Ryan à Comment puis-je ouvrir un lien externe dans Safari n'est pas l'application de la UIWebView?
Avoir un lien spécifique passer à Safari, il suffit d'ajouter target="_system" le lien, comme dans
Ou d'attraper tous les liens dans votre code javascript qui ont target="_blank", inclure jQuery et les passer à la fenêtre.ouvert avec le "_system' param. Cela fonctionne à la fois sur iOS et Android.
Javascript ne fonctionne PAS entièrement dans l'AIIC, il est désactivé pour des raisons de sécurité.
target="_system" est un safari fonction, pas un CNA un.
==> brièvement, _system échoue dans l'AIIC.
MODIFIER : cette solution ne fonctionne pas après iOS 10.3. Vous ne savez pas si c'est une fonctionnalité ou d'un bug : https://forums.developer.apple.com/thread/75498
EDIT2 : Apparemment, il fonctionne à nouveau sur iOS 11
Il y a une façon simple de le faire, si vous avez le contrôle sur le serveur du portail captif.
Lors de la connexion à un réseau wi-fi, les appareils iOS envoyer une requête GET à un tas de prédéfinies url (
http://www.apple.com/library/test/success.html
, ...) , pour voir si il existe une connectivité Internet (wispr demandes). L'appareil iOS attend la réponse<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>
. Si la demande aboutit, mais la réponse est différente (par exemple, votre page du portail captif), il déclenche l'ANC pour l'ouvrir.À ce stade, l'ANC pense que vous n'êtes pas connecté et affiche une
Cancel
bouton en haut. Chaque lien est ouvert à l'intérieur de l'ANC et non dans une fenêtre de Safari, peu importe ce que vous faites. L'AIIC est fait de sorte que vous pouvez obtenir votre utilisateur à travers le processus d'ouverture de session. Afin de voir si le processus d'ouverture de session est fait et que la connexion est enfin établie, l'appareil iOS maintenant et puis de l'envoyer à un autre wispr demande. Cela se produit toutes les 40 secondes, ou chaque fois qu'une requête HTTP émise (la navigation au sein de l'ANC).Lorsque votre serveur enfin des réponses
Success
à un wispr demande, l'ANC va marquer commeconnected
, le bouton en haut se transforme enDone
. À ce stade, un lien vers une url externe sera proche de la CNA et de l'ouvrir dans Safari 🙂Donc, pour résumer, vous pouvez obtenir ce que vous voulez avec la connexion suivante suit :
<script>window.location.reload(true)</script>
ce qui va déclencher l'appareil iOS pour envoyer immédiatement un autre wispr demande<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>
, ce qui va déclencher l'ANC de marque comme connecté