web-dev-qa-db-fra.com

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

J'ai pu ouvrir les 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 à l'aide de schémas d'URL dans Safari?

19
kevin

Mise à jour de Shchemes URL IOS 9: iOS 9 introduit LSApplicationQueriesSchemes pour permettre aux applications de rechercher si d'autres applications sont installées.

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

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

NON si aucune application ne prend en charge cette URL

syslog affichera canOpenURL: échoué pour l'URL: "urlScheme: //" - erreur: null

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

toujours retourner NON

syslog affichera canOpenURL: échoué pour l'URL: "urlScheme: //" - erreur: null

Dans iOS 9, le développeur doit ajouter ces informations.plist LSApplicationQueriesSchemes

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

50 max. le schéma d'URL unqiue peut être déclaré!

3
Malek Belkahla

Avec la version générale du paramètre ios9, window.location vers une URL personnalisée lance l'application, mais uniquement après que l'utilisateur a ouvert la fenêtre. 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 examineraient le problème où si vous appuyez sur annuler, il échoue sur les tentatives futures.

2
Helen Woodward

Avec iOS9, Apple modifie certaines choses concernant les schémas d'URL. Ici est un article sur ces changements.

Fondamentalement, vous avez pour enregistrer tous les schémas d'URL pris en charge par votre application dans votre fichier .plist.

2
Eric Schanet

Attribuez simplement l'adresse souhaitée à la propriété href, au lieu d'essayer de remplacer l'ensemble window.location objet:

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

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

0
Pavel Sadchenko