Détecter si l'utilisateur a l'application
Bonjour à tous et à toutes,
J'aurais besoin d'un petit coup de main pour faire fonctionner correctement un script.
Je voudrais rediriger les utilisateurs vers l'application Facebook si l'utilisateur a l'apli ou ouvrir une nouvelle page (target blank) vers ma page Facebook si utilisateur n'a pas l'apli.
Ça fonctionne presque sur mon ordi de bureau, j'ai pas l'apli donc je suis redirigé vers la page dans mon navigateur mais pas dans une nouvelle fenêtre.
J'ai essayé de remplacer les window.location par des window.open mais la plus rien ne fonctionne.
Sur mon portable je suis bien redirigé vers l'apli parce que je l'ai mais quelqu'un qui ne la pas a un message d'erreur au lien d'être redirigé dans le navigateur.
J’espère que quelqu'un pourra m'aider.
Merci d'avance.
Voici mon code actuel.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <!-- iframe utilisé pour tenter de charger un protocole personnalisé -->
<iframe style="display:none" height="0" width="0" id="loader"></iframe>
<script>(function(){
// Pour le navigateur de bureau, n'oubliez pas de transmettre toutes les métadonnées sur le lien pour le lien profond
var fallbackLink = 'https://www.facebook.com/webinkmarseille/'+window.location.search+window.location.hash;
// Détection simple des appareils
var isiOS = navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone') || navigator.userAgent.match('iPod'),isAndroid = navigator.userAgent.match('Android');
// Mobile
if (isiOS || isAndroid) {
// Chargez notre protocole personnalisé dans l'iframe, pour Chrome et Opera, cela enterre la boîte de dialogue d'erreur (qui est en fait HTML)
// pour iOS, nous obtiendrons une erreur contextuelle si ce protocole n'est pas pris en charge, mais il ne bloquera pas javascript
document.getElementById('loader').src = 'custom-protocol://my-app'+window.location.search+window.location.hash;
// Le lien de secours pour Android doit être https:// plutôt que market:// ou l'appareil essaiera de
// charge les deux URL et seule la dernière gagnera. (En particulier FireFox, où une boîte de dialogue "Êtes-vous sûr" apparaîtra)
// sur iOS, nous pouvons nous connecter directement à l'App Store car notre commutateur d'application se déclenchera avant le commutateur
// Si vous avez une application Web mobile, votre solution de repli pourrait être celle-ci à la place.
fallbackLink = isAndroid ? 'https://www.facebook.com/webinkmarseille/' :'fb://profile/webinkmarseille' ;
}
// Maintenant, nous attendons simplement que tout s'exécute, si l'utilisateur est redirigé vers votre application personnalisée
// le délai d'attente ci-dessous ne se déclenchera jamais, si une application personnalisée n'est pas présente (ou si l'utilisateur est sur le bureau)
// nous remplacerons l'URL actuelle par le fallbackLink (URL de magasin ou URL de bureau selon le cas)
window.setTimeout(function (){ window.location.replace(fallbackLink); }, 1);
})();</script> |