Comment détecter si le web application autonome sur Chrome mobile
Chrome mobile a récemment ajouté la possibilité d'ajouter à l'écran d'accueil, similaire à iOS. C'est cool, mais il ne gère pas aussi bien que iOS ne prend pas en charge window.navigator.standalone
de sorte que vous ne pouvez pas détecter si vous êtes en cours d'exécution comme une application autonome.
La référence dit:
Comment puis-je détecter si l'application s'exécute comme une application installée?
Vous ne pouvez pas, directement.
Remarquez qu'il dit "directement". Ma question est peut-on faire indirectement? Est-il une façon délicate de faire une supposition éclairée?
Vous devez vous connecter pour publier un commentaire.
Cette réponse est livré avec un énorme retard, mais je l'ai poster ici, seulement pour d'autres gens qui ont du mal à trouver une solution.
Récemment, Google a mis en place le CSS conditionnelles
display-mode: standalone
, il y a donc deux façons de détecter si une application est en cours d'exécution autonome:À l'aide de CSS:
À l'aide de CSS et Javascript:
Si vous avez besoin de plus d'informations, les Développeurs de Google a une page dédiée à ce sujet: https://developers.google.com/web/updates/2015/10/display-mode
display-mode: standalone
depuis Nov 2014 mais mieux vaut tard que jamais 🙂display: standalone
(pasdisplay: fullscreen
) stackoverflow.com/a/54652992/2833684iOS et Chrome WebApp se comporte de façon différente, c'est la raison pour laquelle je suis à la suivante:
Même comme ici: Détecter si iOS est l'aide de l'application web
Pour IOS, nous avons
window.navigator.standalone
de la propriété à vérifier..Mais pour Chrome sur Android, il ne gère pas cette propriété. Seul moyen de vérifier par le calcul de la largeur de l'écran et de la hauteur.
Ci-dessous est le code pour vérifier que:
J'ai eu référence à partir du lien ci-dessous:
L'Écran d'accueil des Applications Web pour Android Grâce à google Chrome 31
display-mode: standalone
.Une vieille question, mais nettement meilleures solutions disponibles aujourd'hui pour Chrome Android.
L'une des façons(la plus propre de l'OMI). Vous pouvez ajouter un Manifeste de l'Application avec un "start_url' clé avec une valeur qui ajoute un paramètre de chaîne de requête à votre page d'accueil habituelle.
ex:- si la page d'accueil url est https://www.example.com.
dans le Manifeste de l'Application Web jeu
Google guide Web du manifeste de l'application:https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
Avec IOS, localstorage pour l'autonome et en mode web sont différents. Avec android KitKat et Chrome, lorsque vous enregistrez une valeur dans localstorage sur la version web, vous êtes en mesure de le récupérer en mode autonome.
Donc, il vous suffit d'enregistrer le document.documentElement.clientHeight à localstorage lorsque l'utilisateur navigue sur le web version (avant de l'ajouter à l'écran d'accueil). Ensuite, il suffit de comparer la valeur actuelle du document.documentElement.clientHeight avec localstorage valeur. Si la valeur actuelle est >, c'est le mode autonome.
Je l'ai essayé sur plusieurs appareils.
display-mode: standalone
.Pour Google Chrome (Android) à partir de la version 39 à compter avec manifeste de l'application web (json) et dans ce cas, il est une simple page de l'application, j'utilise ce "truc":
Dans le manifeste.json j'ai mis:
"start_url": "standalone.html"
.Normalement c'est (dans mon cas index.html), mais à partir de index.html je fais un clone identique: standalone.html (ou ce que vous voulez).
Puis, à vérifier, j'ai utiliser du Javascript comme ceci:
Qui fonctionne.
Il pourrait fonctionner aussi sous Google Chrome (mobile) la version 31-38 avec cette méta-tag:
<meta name="application-url" content="http://my.domain.com/standalone.html">
.Pas testé encore.
Pour détecter si elle est en cours d'exécution sur MIT AI2 webview:
Il n'y a pas de " bon " moyen de le faire sur Android, donc pas de prise en charge des API encore.
La solution de contournement que nous avons utilisé dans mon entreprise -
Lors de la première connexion, magasin screenheight dans localstorage.
Par screenHeight je veux dire le document.documentElement.clientHeight avant le chargement de la page, depuis doc grandit et ce n'est pas la mesure exacte de réel disponible la hauteur de l'écran.
Chaque fois que l'utilisateur se connecte au prochain poste de contrôle actuel screenheight vs stockées - si elle devient plus grande, l'utilisateur a disparu en plein écran.
Il n'y a pas de scénario sur lequel il peut devenir plus petit, SI VOUS entrez la PREMIÈRE valeur de TEMPS pour la hauteur de l'écran.
Mise en garde de l'utilisateur qui permettra de nettoyer en espèces.
Nous avons choisi d'ignorer que, comme la plupart des utilisateurs ne le font pas ou le font relativement rares, et il suffit(à notre avis), pour un certain temps jusqu'à ce qu'il y aura des API pour résoudre ce problème( j'espère qu'il y aura 🙂 )
Option b - vérifier les screenheight vs périphérique à la hauteur de l'écran, le match pour quelques appareils de test & modes navigateur a montré un modèle( hauteur disponible < 70 dans webapp) - je crois fermement à un plus large comparaison peut obtenir les valeurs à cela suffit pour 90% des appareils dans 90% des cas.
Tout cela est une solution de contournement, bien sûr, je ne suis pas feignant de son un solide stable de façon à obtenir pour les fonctionnalités souhaitées, - mais pour nous, cela a fonctionné, donc j'espère que cela aide quelqu'un d'autre qui ont combattu ce bug(cant appel manquant cruciales telles api fonctionnalité d'autre moyen). Bonne chance 🙂
display-mode: standalone
répondu par @josemmo ci-dessus.