Comment ouvrir les schémas d'URL à partir de Safari dans iOS9?

J'ai pu ouvrir des applications de safari de cette façon:

window.location = 'myapp://do/xx'; 

ou ouvrez l'application facebook:

 window.location = 'fb://'; 

Mais cela a cessé de fonctionner dans iOS9.

Comment puis-je ouvrir des applications en utilisant des schémas d'URL dans Safari?

Mise à jour des shchemes d'URL IOS 9: iOS 9 introduit LSApplicationQueriesSchemes pour permettre aux applications d'effectuer des requêtes si d'autres applications sont installées.

1- Si un schéma d'url est déclaré et appelle canOpenURL (schéma)

YES si une application installée prend en charge ce schéma d'URL

NON si aucune application ne prend en charge cette URL

syslog montrera canOpenURL: échoué pour l'URL: "urlScheme: //" – erreur: null

2- Si un schéma d'URL n'est pas déclaré et appelle canOpenURL (schéma)

toujours returnner NO

syslog montrera canOpenURL: échoué pour l'URL: "urlScheme: //" – erreur: null

Dans iOS 9, le développeur doit append ces info.plist LSApplicationQueriesSchemes

 <array> <ssortingng>urlscheme</ssortingng> <ssortingng>urlscheme2</ssortingng> <ssortingng>urlscheme3</ssortingng> <ssortingng>urlscheme4</ssortingng> </array> 

50 max. Le schéma d'URL Unqiue peut être déclaré!

Avec iOS9, Apple change quelques points concernant les schémas d'URL. Voici un article sur ces changements.

Fondamentalement, vous devez maintenant save tous les schémas d'URL pris en charge par votre application dans votre file .plist.

Avec la version générale de ios9 setting window.location à une URL personnalisée ne lance l'application, mais seulement après que l'user ouvre dans un popup. J'ai déposé un bug avec Apple à ce sujet, et ils ont répondu en disant que c'était un comportement prévu pour lancer une application à partir de safari. Ils ont dit qu'ils se pencheraient sur le problème où si vous frappez annuler, il échoue sur les tentatives futures.

Affectez juste une adresse désirée à la propriété href , au lieu d'essayer de replace l'object window.location entier:

window.location.href = 'myapp://do/xx';

Cela fonctionne pour moi sur iOS 9.0.2, mais maintenant safari montre une boîte de dialog de confirmation pour s'assurer qu'un user veut vraiment ouvrir votre lien dans l'application.

C'est ainsi que j'ai révisé mon intégration Facebook / Google Login pour le faire fonctionner sur la dernière mise à jour. qui maintenant la vue web Safari de l'user.

 <key>LSApplicationQueriesSchemes</key> <array> <ssortingng>fbapi</ssortingng> <ssortingng>fb-messenger-api</ssortingng> <ssortingng>fbauth2</ssortingng> <ssortingng>fbshareextension</ssortingng> <ssortingng>com.googleusercontent.apps.39373238582-opjuqokmar2i5t3sdk2vs5sifer4moen</ssortingng> <ssortingng>com-google-gidconsent-google</ssortingng> <ssortingng>com-google-gidconsent-youtube</ssortingng> <ssortingng>com-google-gidconsent</ssortingng> <ssortingng>com.google.gppconsent.2.4.1</ssortingng> <ssortingng>com.google.gppconsent.2.4.0</ssortingng> <ssortingng>googlechrome</ssortingng> <ssortingng>googlechrome-x-callback</ssortingng> </array>