Comment ouvrir un natif de l'application iOS à partir d'une application web
Résumé j'ai une application avec une fonctionne correctement schéma d'URL que je voudrais lancer à partir d'une application web stockées sur l'écran d'accueil, et la normale de redirection JavaScript méthodes ne semblent pas fonctionner.
Détails je suis en train de créer une web app iOS, être ouvert en mode plein écran à partir d'un lien enregistrés sur l'Écran d'Accueil. L'application web doit ouvrir une application native. J'ai déjà enregistré le schéma d'url pour l'application native, et vérifié qu'il fonctionne correctement, je peux ouvrir l'application native en tapant le schéma directement dans ma barre d'adresse de Safari, par exemple. Je peux aussi ouvrir d'autres applications à l'aide de la +openURL:
méthode de UIApplication
. Je voudrais aussi l'ouvrir avec certains arguments d'un natif application web qui peut être ajouté à l'écran d'accueil.
Ce que j'essaie de faire est d'utiliser JavaScript comme à l'intérieur de l'application native:
window.location = "myapp://myparam";
Lors de l'utilisation de ce code à l'intérieur de l'application web, je reçois une alerte disant:
"Impossible d'Ouvrir le myWebAppName - myWebAppName pas pu être ouvert. L'
l'erreur a été "Cette URL ne peut pas être affichée".".
Cette même javascript lors de l'exécution Safari fonctionne correctement. J'obtiens le même résultat à l'aide window.location.replace("myapp://myparam")
.
Le code html pour l'application web est:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
<meta name="generator" content="TextMate http://macromates.com/">
<meta name="author" content="Carl Veazey">
<!-- Date: 2012-04-19 -->
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" />
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.navigator.userAgent.indexOf('iPhone') != -1) {
if (window.navigator.standalone == true) {
window.location = "myapp://myparam";
} else {
document.write("please save this to your home screen");
};} else {
alert("Not iPhone!");
document.location.href = 'please-open-from-an-iphone.html';
};
</script>
</body>
</html>
Ce que je fais mal ici? Je suis assez inexpérimenté avec javascript et web mobile donc je pense que je suis juste en manque de quelque chose d'évident.
- ne pouvez pas vous rediriger vers l'app store lien?
- désolé, que voulez-vous dire exactement? comme puis-je ouvrir l'app store à partir de mon application web? edit: je peux ouvrir le natif de l'application maps, par exemple, je soupçonne que le système utilise le protocole http est pourquoi cela fonctionne. Cela ne fonctionnera pas pour mon application, malheureusement.
- donc en tapant myapp://myparam dans la barre d'url fonctionne?
- qui ne serait pas faire beaucoup. Il essaie d'ouvrir l'application native. Ne pas ouvrir la page de l'appli sur iTunes. Si l'utilisateur est redirigé vers l'App Store lien, il serait plus dirigé vers la page de l'app dans iTunes sur l'iDevice... il ne serait pas ouvrir l'application elle-même.
- c'est correct.
- Hm, pensait que c'était un param question. Très bizarre, j'ai utilisé de la fenêtre.emplacement avant de la main sans aucun problème. Avez-vous essayé de la fenêtre.ouvert(myapp://myparam)
- Ce simple fichier HTML ouvrez l'application, s'il existe, sinon ouvrir le magasin URL. Il fonctionne pour Android et iOS. gist.github.com/noelrocha/e423ff9ec98011e10ef7
- Salut! Je vois beaucoup de questions de ce genre, mais.. avez-vous jamais eu besoin de REVENIR à l'application web?
Vous devez vous connecter pour publier un commentaire.
Votre code fonctionne si son mobile safari, mais PAS si son à partir d'un signet sur l'iOS de bureau. Jamais essayé de cette façon avant, mais c'est la question. Si je viens de mettre votre JS pour
Il fonctionne dans le navigateur, mais quand signet il échoue. Il pourrait avoir quelque chose à faire avec la façon dont l'url est chargé lors de son signet depuis il n'y a pas de chrome? Ma conjecture est que apple ne veut pas réservé marquer les pages pour un accès local apps. Aussi, j'ai remarqué que si je marque hébergé localement de la page, qui fonctionne dans le navigateur safari mobile, je n'arrive pas à la charger via signet. C'est vraiment bizarre....
Meilleure recommandation que j'ai pour vous est de le rendre
au lieu de
Cette manière, il sera sur l'écran d'accueil, mais malheureusement charge avec le chrome. C'est la seule solution je pense.
Si vous avez besoin d'ouvrir une application iOS s'il est installé, et que vous souhaitez préserver votre page de fonctionnalité, le
location.href = 'myapp://?params=...';
ne va pas aider, car simyapp://
n'est pas enregistré, la redirection conduit l'utilisateur à destination inaccessible.Le pari le plus sûr semble être à l'aide d'un
iframe
. Le code suivant permet d'ouvrir une application iOS si il est déjà installé et ne sera pas causer un échec si elle n'est pas (bien qu'il puisse avertir l'utilisateur que la page n'a pas pu être atteint que si l'application n'est pas installée):Essayez comme ceci:
La page d'index
la receiver.php page:
Permettra de rediriger le navigateur de la saisie de l'URL (http://example.com/) si l'appareil est un iPod ou un iPhone. Ajouter le script vers le haut de votre application web, assurez-vous de l'enregistrer en tant que
.php
fichier plutôt que de le.html
.Source:
http://www.schiffner.com/programming-php-classes/php-mobile-device-detection/
header.location="URL"
suffirait. Je ne suis pas sûr que ce que vous êtes après, si.header('location:URL');
?