IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Deep link Android/IOS différent navigateur


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 75
    Points : 60
    Points
    60
    Par défaut Deep link Android/IOS différent navigateur
    Bonjour,

    Navré si j'ai mal cherché sur les forum de Developpez et ailleurs mais je n'arrive pas à trouvé ma solution qui a été posé maintes fois.

    Basiquement je voudrais faire une page web qui, quand elle est appelé via un mobile (Android/IPhone/Tablette...) et quelque soit le navigateur (Chrome, Google, Samsung, Firefox, Edge, Opera, Ecosia, Safari...) lance une application si elle est présente ou redirige sur le store Google ou Apple si l'application n'est pas installé.

    Avec ce que j'ai pu trouvé voici un des codes que j'ai fais mais ca ne fonctionne pas automatiquement.
    et dans la consol de débug ca me dit "La navigation sur fb:// est bloquée."
    Par contre si j'utilise le lien ca marche.
    Après je parle pas des différent comportement entre les navigateurs et leur versions...

    un lien vers mon site de test

    Je suis vraiment novice alors toutes les aides sont les bienvenu

    (Les liens sur les store sont pas correct mais c'est pas le plus important ^^)
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    ////////////////////////////
    // Déclaration des variables
    $ua = $_SERVER['HTTP_USER_AGENT'];
     
     
    ////////////////////////////
    // Url du store par défaut une autre page si l'appareil n'est pas reconu
    $urlStore = 'https://deeplink.lanchais.fr/error';
     
    ////////////////////////////
    // Url de l'App en local sur le téléphone
    $urlAppLocal = 'fb://';
     
    ////////////////////////////
    // Url du l'App sur le Google Play
    $urlGooglePlay = 'market://details?id=com.facebook.android';
     
    ////////////////////////////
    // Url du l'App sur l'Aplpe Store
    $urlAppleStore = 'https://apps.apple.com/fr/app/facebook/id284882215';
     
    ////////////////////////////
    // Identification du téléphone et modification des URl n conséquence 
    if ( preg_match('/android/i',$ua)) { 
            $urlStore = $urlGooglePlay; 
    }
    elseif ( preg_match('/iphone/i',$ua) || preg_match('/ipad/i',$ua)  || preg_match('/macintosh/i',$ua)  ) { 
            $urlStore = $urlAppleStore; 
    }
     
     
    ////////////////////////////
    // Génération de la page
    echo 'URL App local : '.$urlAppLocal.'<br/><br/>';
    echo 'URL du store : '.$urlStore.'<br/><br/>';
     
    ////////////////////////////
    // Génération de la page
    ?>
    <!doctype html>
    <html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>Deep link App ou Store</title>
    </head>
    <body>
      <a href="#" onclick="startMyApp()">Essayer de lancer l'application</a>
      <script type="text/javascript">  
            window.addEventListener("DOMContentLoaded", (event) => { 
              window.location.replace("<?php echo $urlAppLocal; ?>"); 
              setTimeout(function () {
                      window.location.replace("<?php echo $urlStore; ?>"); }, 2000);
            });
            
            function startMyApp() {
              document.location = '<?php echo $urlAppLocal; ?>';
              setTimeout( function()   {
                      if( confirm("Ouvrir : <?php echo $urlStore; ?> ?")) {
                            document.location = '<?php echo $urlStore; ?>';
                      }
              }, 300);
       }
      </script>
    </body>
    </html>

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Pour vérifier si une application existe tu peux utiliser https://caniuse.com/?search=getInstalledRelatedApps en JS mais tu verras que le support est assez limité.

    Pour lancer une application depuis le navigateur , coté web il suffit d'un lien. C'est coté applicatif que tout se passe avec la mise en place du deep link comme expliqué ici : https://developer.android.com/traini...s/deep-linking

    Pour IOS , je ne sais pas comment cela se passe.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 75
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Merci pour votre retour.
    Après pas mal de test j'en reste sur ma solution qui en fait à l'air de fonctionner.
    Faire un deeplink directement en dur dans l'application pose le problème qu'en cas de changement de lien il faudra faire une mise à jour de l'application.
    C'est ce qui se faisait avant mais plus maintenant visiblement.

    En fait c'est spécialement avec les navigateurs type Chrome (et ceux en découlant genre Samsung Internet) que j'ai un problème.
    Au tout premier chargement de la page si je puis dire le setTimeout "automatique" fonctionne (pas toujours) mais après ca ne fonctionne pas du tout.
    Par contre le lien que l'on clic ("function startMyApp()") ca fonctionne tout le temp et sur tous les navigateurs.

    Sinon je n'ai aucun problème avec Firefox ou encore l'application Google (pas Chrome j'entend).


  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 75
    Points : 60
    Points
    60
    Par défaut
    Bon en fait le problème n'est pas sur la page web du serveur mais du manifest et Intent dans l'application elle même.
    Je clos donc de post.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/02/2020, 12h02
  2. Largeur d'un champ input dans différents navigateurs
    Par bbobo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/09/2006, 09h46
  3. Tester son script sur différents navigateurs
    Par ePoX dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2006, 14h42
  4. Testeur de page sous différents navigateurs !!
    Par glloq8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/01/2006, 10h56
  5. CSS & Compatibilité différents navigateurs = La déprime.
    Par bébé dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 19/08/2005, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo