J'aimerais avoir iOS pour ouvrir les URL de mon domaine (par exemple http://martijnthe.nl ) avec mon application chaque fois que l'application est installée sur le téléphone, et avec Mobile Safari dans le cas contraire.
J'ai lu qu'il est possible de créer un suffixe de protocole unique pour cela et de l'enregistrer dans Info.plist, mais Mobile Safari donnera une erreur au cas où l'application ne serait pas installée.
Quelle serait une solution de contournement?
Une idée:
1) Utilisez les URL http: // qui s'ouvrent dans n'importe quel navigateur de bureau et rendent le service via le navigateur
2) Vérifiez l'agent utilisateur et dans le cas où il s'agit de Mobile Safari, ouvrez une URL myprotocol: // pour (tenter) d'ouvrir l'application iPhone et demandez-lui d'ouvrir Mobile iTunes pour le téléchargement de l'application en cas d'échec de la tentative
Vous ne savez pas si cela fonctionnera ... des suggestions? Merci!
Réponses:
Je pense que la façon la moins intrusive de procéder est la suivante:
appInstalled
cookiewindow.location
suryour-uri://
(ou effectuez la redirection côté serveur)your-uri://
L'autre option avec laquelle j'ai joué mais que j'ai trouvé un peu maladroit était de faire ce qui suit en Javascript:
la source
window.location="custom-uri://
réussite, le délai de repli n'est pas supprimé. Lorsque l'utilisateur retourne au navigateur depuis votre application, le minuteur est toujours là et lance le lien de l'App Store. Il s'agit d'une mauvaise expérience utilisateur.Il est tout à fait possible de le faire en JavaScript tant que votre solution de rechange est un autre lien. S'appuyant sur la suggestion de Nathan :
Découvrez une démo en direct ici .
la source
Pour les appareils iOS 6, il existe une option: promotion des applications avec des bannières d'applications intelligentes
la source
J'ai trouvé que la réponse sélectionnée fonctionne pour les applications de navigateur, mais je rencontrais des problèmes avec le code fonctionnant dans les applications sans navigateur qui implémentent un
UIWebView
.Le problème pour moi était qu'un utilisateur de l'application Twitter cliquait sur un lien qui les mènerait à mon site via un
UIWebView
dans l'application Twitter. Puis, quand ils ont cliqué sur un bouton de mon site, Twitter essaie d'être fantaisiste et ne le complète quewindow.location
si le site est accessible. Donc, ce qui se passe est unUIAlertView
pop-up disant que vous êtes sûr de vouloir continuer, puis redirige immédiatement vers l'App Store sans deuxième pop-up.Ma solution implique des iframes. Cela évite d'
UIAlertView
être présenté permettant une expérience utilisateur simple et élégante.jQuery
Javascript
ÉDITER:
Ajoutez une position absolue à l'iframe afin qu'il n'y ait pas un espace aléatoire au bas de la page lorsqu'il est inséré.
Il est également important de noter que je n'ai pas trouvé de besoin pour cette approche avec Android. L'utilisation
window.location.href
devrait fonctionner correctement.la source
Dans iOS9, Apple a enfin introduit la possibilité d'enregistrer votre application pour gérer certaines
http://
URL: Universal Links .Une explication très approximative de son fonctionnement:
http://
vouloir ouvrir des URL pour certains domaines (URL Web) dans votre application.http://
URL pour une configuration comme expliqué ci-dessus et ouvre automatiquement l'application correcte si elle est installée; sans passer par Safari d'abord ...C'est le moyen le plus propre de créer des liens profonds sur iOS, malheureusement cela ne fonctionne que dans iOS9 et plus récent ...
la source
CONSTRUIRE à nouveau sur la réponse de Nathan et JB:
Comment lancer l'application à partir de l'URL sans clic supplémentaire Si vous préférez une solution qui n'inclut pas l'étape intermédiaire de cliquer sur un lien, les options suivantes peuvent être utilisées. Avec ce javascript, j'ai pu renvoyer un objet Httpresponse de Django / Python qui lance avec succès une application si elle est installée ou bien lance la boutique d'applications en cas de time out. Remarque J'ai également dû ajuster le délai d'expiration de 500 à 100 pour que cela fonctionne sur un iPhone 4S. Testez et ajustez pour l'adapter à votre situation.
la source
document.webkitHidden
est de détecter si votre application est déjà invoquée et que l'onglet safari actuel passe en arrière-plan, ce code provient de www.baidu.comla source
appurl
etweburl
pourrait résoudre votre problèmeSi vous ajoutez un
iframe
sur votre page Web avec lesrc
schéma défini sur personnalisé pour votre application, iOS redirigera automatiquement vers cet emplacement dans l'application. Si l'application n'est pas installée, rien ne se passera. Cela vous permet de créer un lien profond vers l'application si elle est installée, ou de rediriger vers l'App Store si elle n'est pas installée.Par exemple, si vous avez installé l'application Twitter et accédez à une page Web contenant le balisage suivant, vous serez immédiatement dirigé vers l'application.
Voici un exemple plus complet qui redirige vers l'App Store si l'application n'est pas installée:
la source
Voici une solution.
Configurer une sitiation booléenne en utilisant le flou et la mise au point
Liez votre lien avec un gestionnaire de clics jquery qui appelle quelque chose comme ça.
si l'application s'ouvre, nous perdrons le focus sur la fenêtre et le chronomètre se termine. sinon nous n'obtenons rien et nous chargeons l'url facebook habituelle.
la source
Pour autant que je sache, vous ne pouvez pas faire comprendre à l'ensemble du système d'exploitation une
http:
URL de domaine +. Vous ne pouvez enregistrer que de nouveaux régimes (j'utilisex-darkslide:
dans mon application). Si l'application est installée, Mobile Safari lancera l'application correctement.Cependant, vous devrez gérer le cas où l'application n'est pas installée avec un "Toujours ici? Cliquez sur ce lien pour télécharger l'application depuis iTunes." dans votre page Web.
la source
http
URLCela me semble une approche raisonnable, mais je ne pense pas que vous pourrez l'obtenir pour ouvrir des itunes mobiles en deuxième recours. Je pense que vous devrez choisir l'un ou l'autre - soit rediriger vers votre application ou vers iTunes.
Par exemple, si vous redirigez vers myprotocol: //, et que l'application n'est pas sur le téléphone, vous n'aurez pas une seconde chance de rediriger vers iTunes.
Vous pourriez peut-être d'abord rediriger vers une page de destination (optimisée pour l'iphone) et donner à l'utilisateur la possibilité de cliquer sur votre application, ou sur iTunes pour obtenir l'application s'il ne l'a pas? Mais, vous comptez sur l'utilisateur pour faire la bonne chose là-bas. (Modifier: bien que vous puissiez définir un cookie afin que ce soit une première chose uniquement?)
la source
En cherchant à résoudre le problème des fenêtres pop-up, j'ai découvert qu'Apple avait une solution à ce problème.
En effet, lorsque vous cliquez sur ce lien , si vous avez installé l'application, elle est redirigée vers celle-ci; sinon, vous serez redirigé vers la page Web, sans aucune fenêtre contextuelle.
la source