Arrêter de rechargement de l'application web lancé à partir de l'Écran d'Accueil iPhone
J'ai créé une application web et ajouté à mon Écran d'Accueil iPhone. Lorsque je passe à une autre application et à l'arrière, iPhone automatiquement recharger mon application web. Cela me brise le app flux.
Comment puis-je empêcher l'iPhone à partir de rechargement de l'application?
J'ai apple-mobile-web-app-capable de la balise meta permis de masquer la barre d'outils de Safari et je ne veux pas pour l'éteindre.
- donc, vous n'avez même pas touché quelques-uns des morceaux de cacao et seulement sauvé le lien vers votre téléphone?
- Specht: Pas sûr de ce que votre point est, mais l'OP est de demander à propos d'une application web, pas une application native. Liés à la question sur la SORTE: stackoverflow.com/questions/6686654/... - Malheureusement, que l'on ne doit pas avoir de réponse non plus.
- Voir ma réponse ici: stackoverflow.com/a/40707231/473637
- C'est une telle honte 🙁
- Créé cette petite réagir module qui persiste cette info sur le stockage local, et redirige vers l'itinéraire précédent lorsque l'application des montures, ce problème est pertinent encore aujourd'hui (github.com/diogofcunha/react-persist-route)
Vous devez vous connecter pour publier un commentaire.
Je viens de trouver cette question DONC: Arrêter natif de l'application web de rechargement de lui-même lors de l'ouverture sur iOS
Comme il semble que c'est une limitation de Safari, une solution proposée est de persister vos web apps état à l'aide de Javascript et HTML5 localStorage. Lorsque votre application web est lancé, vérifiez l'état persistant et de le charger si disponible.
Vous pouvez lire à propos de l'utilisation localStorage dans Safari ici: http://developer.apple.com/library/safari/#documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007256-CH1-SW1
Espère que vous aide. Au moins il a fait pour moi, que j'ai eu le même problème que vous. 🙂
J'ai trouvé un hack, testé sur
iOS 11.4.1/12.0
Ouvert du téléchargement du fichier de la fenêtre, puis revenez à l'écran d'accueil.
L'application continue de travailler, dans mon cas, l'audio est en cours de lecture et
localStorage
est mise à jourÉpreuves:
https://youtu.be/heehLUhGKYY
PS. notez comment la chanson progrès changements lorsque nous cherchons, il s'avère que l'application fonctionne en arrière-plan
La réponse courte est que vous ne pouvez pas contrôler cela. Parfois, iOS va garder une web app active en arrière-plan, d'autres fois, elle le tuera. Il est tout à fait liée à la quantité de mémoire disponible sur l'appareil.
Donc, votre meilleure approche est de minimiser les problèmes posés par ce rechargement. Assurez-vous que votre webapp mises à jour de l'URL lorsque vous vous déplacez de l'affichage, soit en changeant
location.hash
ou à l'aide dehistory.pushState()
. Cela vous permettra de recharger quelle que soit l'utilisateur était sur l'avant, ils ont changé les applications. Il y apagehide
etpageshow
événements qui vous permettent d'exécuter du code lorsque l'utilisateur s'éloigne de votre application - profiter de l'occasion pour magasin local de l'état dans le localStorage et/ou IndexedDB, de récupérer les données à nouveau lorsque la webapp est rouverte.Mise à jour: que cette réponse est la réception de downvotes, j'ai ajouté cette explication.
Votre problème peut ne pas être la recharger, mais le fait que le navigateur Safari Mobile traite de l'utilisateur de votre cache et les cookies de manière différente lorsque votre application web est ouvert dans le navigateur, que quand c'est "installé" comme une application web à l'écran d'accueil. Bien que les solutions proposées ici que l'utilisation localStorage de travail, ils ont beaucoup de travail pour la logique client peut être évité si votre serveur est déjà responsable de la persistance de l'état de session de l'utilisateur. Le 30-deuxième solution est tout simplement de définir explicitement le cookie de session pour avoir une plus longue durée de vie.
Cela vous permet de garder l'état intact, même entre l'appareil redémarre, donc, même si elle n'est pas techniquement arrêt de l'application web d'être rechargé lorsqu'il est lancé à partir de l'écran d'accueil, c'est un moyen facile de restaurer l'état de l'utilisateur sans lui/elle en remarquant le recharger - qui dans de nombreux cas, je soupçonne est le vrai problème.
Pour une discussion plus détaillée de cette stratégie et des exemples de code, jetez un oeil à ces questions et mes réponses:
Maintenir la Session PHP web app sur iPhone
iPhone "Signet à la page d'accueil", supprime les cookies et session?