Je suis à la recherche d'un événement sur mobile safari qui permettra de détecter quand la page a été cachée en raison d'une redirection. Je veux ouvrir mon application directement si un utilisateur l'a installé, puis essayer facebook s'il est installé, et sinon, allez sur la page web pour cet identifiant.Mobile Safari Page décharger/cacher/flouter pour Deep Linking
- Si 'myapp' est installé, alors myapp est ouvert. Mais l'onglet safari est toujours redirigé vers facebook.com
- Si 'myapp' n'est pas installé, mais facebook est, alors facebook ios app est ouvert. Mais l'onglet safari se toujours redirigés vers facebook.com
J'ai créé un test link avec le HTML/JS suivant:
<!DOCTYPE html>
<html>
<head>
<title>Redirect Test</title>
<script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>
<meta name='viewport' content='initial-scale = 1.0,maximum-scale = 1.0' />
</head>
<body>
<button>Open Oreo</button>
<script type='text/javascript'>
jQuery(function(){
jQuery('button').on('click', function(){
var myid = null, fbid = null;
// Watch for page leave to kill timers
jQuery(window).on('pagehide pageshow blur unload', function(){
if (myid) {
clearTimeout(myid);
}
if (fbid) {
clearTimeout(fbid);
}
});
window.location = "myapp://fbprofile/oreo";
var myid = setTimeout(function(){
// My app doesn't exist on device, open facebook
window.location = "fb://profile/oreo";
fbid = setTimeout(function(){
// Facebook doesn't exist on device, open facebook mobile
window.location = "https://www.facebook.com/oreo";
}, 100);
}, 100);
});
});
</script>
</body>
</html>
Merci pour le conseil! Malheureusement cela ne s'applique pas car j'utilise un bouton et redirige avec javascript, plutôt qu'un lien. Il n'y a donc pas d'événement "bulle de liens" à annuler. –
Vous avez raison - j'ai tiré de la hanche et a raté ce fait entièrement! La suggestion au sujet des contrôles de navigateur se tient, cependant. Voir ma réponse éditée ci-dessus - déplacé les contrôles pertinents dans les fonctions 'setTimeout' et se débarrasser de la' clearTimeout's. – goddogsrunning
Safari rouvre la dernière page visitée une fois redémarrée et le script ne fonctionnera pas dans ce cas. Afin d'éviter ce comportement, vous pouvez ajouter 'window.close();' aux blocs 'else'. – ruphus