2017-10-07 19 views
2

J'ai une application qui utilise Branch.io et je suis en train de la mettre à jour pour prendre en charge les applications instantanées. Une partie de ce changement nécessitera l'utilisation de liens d'applications pour naviguer d'une partie de l'application à l'autre. L'activité que j'ouvre est configurée pour utiliser Branch.io (par exemple en utilisant les instructions du https://dev.branch.io/marketing-channels/android-instant-apps/guide/) et inclut la méthode onStart(). Cependant, je ne vois pas les paramètres que j'inclus dans le lien profond dans referringParams. Ai-je besoin de déclencher l'ouverture de la branche de manière particulière à partir du code Android pour que cela fonctionne?Branch.io et applications instantanées

BTW referringParams ci-dessus montre +clicked_branch_link étant false.

MISE À JOUR

Juste pour apporter quelques précisions. J'essaie par exemple de lancer ActivityB à partir de ActivityA en utilisant le lien profond de l'application. ActivityB comprend <intent-filter> comme décrit dans https://dev.branch.io/marketing-channels/android-instant-apps/guide/ par exemple. Dans ActivityA Je suis actuellement en essayant d'ouvrir/créer un lien Branch.io comme suit (ont également formé un lien direct, comme il est utilisé dans cet échantillon android-instant-apps par exemple, mais ce n'est pas considéré comme un « lien de branche »)

HashMap<String, String> metadata = new HashMap<>(); 
    metadata.put(PARAM, param); 

    BranchUniversalObject branchUniversalObject = new BranchUniversalObject().addContentMetadata(metadata); 
    LinkProperties linkProperties = new LinkProperties(); 
    branchUniversalObject.generateShortUrl(context, linkProperties, (url, error) -> { 
     if (error == null) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      context.startActivity(intent); 
     } 
    }); 

Si j'essaie d'ouvrir l'URL générée (par generateShortUrl) directement sur l'appareil (en cliquant sur le lien par exemple), alors ActivityB est lancé et je vois le paramètre que j'ai inclus dans le rappel initSession. Si je tente de l'ouvrir en utilisant le code ci-dessus (naviguait betweeen ActivityA et ActivityB alors ActivityB est lancé mais ne pas les params (et +clicked_branch_link est false)

+0

incompatibilité de clé pourrait provoquer '+ param de clicked_branch_link' pour revenir' false'. Veuillez vérifier que vous avez défini les clés de branchement test/live correctes (reportez-vous à https://stackoverflow.com/questions/38763840/no-deep-link-data). Assurez-vous également que le lien et la clé Branch appartiennent à la même application Branch. –

+0

La clé branch.io doit-elle entrer dans le code qui ouvre le lien de l'application? Si oui, cela signifie-t-il que nous avons besoin d'un code spécifique à une branche pour déclencher l'ouverture du lien? –

+0

Pour recevoir les données de liaison profonde, vous devez enregistrer une fonction de routeur de liens profonds (remplacez 'onNewIntent()' dans Activité où vous appelez 'initSession'). Récupérez ensuite les paramètres de session en appelant 'branch.getLatestReferringParams' https://github.com/BranchMetrics/android-branch-deep-linking#initialization –

Répondre

0

Pour configurer le kit de développement de la succursale avec votre application instantanée pris en charge Android App vous pouvez suivre les étapes ci-dessous:.

1. Initialisez le SDK de la Direction Initialisez le SDK Branch dans la méthode onCreate() de votre classe d'application Si vous envisagez de liens profonds de votre Android App instantanée à votre plein Android Une fois l'application installée, vous devez ajouter la ligne enablePlayStoreReferrer, ce qui ajoute un délai à l'initializa attendre l'application Google Play Referrer, ce qui peut prendre jusqu'à une seconde.

public void onCreate() { 
    super.onCreate(); 
    // This is needed to deferred deep link from an Android Instant App to a full app 
    // It tells the Branch initialization to wait for the Google Play Referrer before proceeding. 
    Branch.enablePlayStoreReferrer(1000L); 

    // Initialize the Branch SDK 
    Branch.getAutoInstance(this); 
} 

2. Ajoutez vos clés de succursale et inscrivez-vous pour l'installation Référent

Apps instantanée peut être assez déroutant, car il y a beaucoup de manifestes différents, mais vous voulez trouver le Manifest qui contient vos balises d'application. Assurez-vous que votre nom de classe d'application est défini ici, puis spécifiez les clés de branche dans l'élément d'application.

<application 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:supportsRtl="true" 
     android:name=".MyApplication"> 

<!-- Set to true to use Branch_Test_Key --> 
    <meta-data android:name="io.branch.sdk.TestMode" android:value="false" /> 
    <meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_app_live_key" /> 
    <meta-data android:name="io.branch.sdk.BranchKey.test" android:value="key_test_app_test_key" /> 

    <receiver android:name="io.branch.referral.InstallListener" android:exported="true"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
    </receiver> 

</application> 

3. Configurez vos liens de branche comme App Android Liens

En supposant que vous avez Branche déjà configuré pour Android App Liens pour votre Android App l'étape suivante consiste à ajouter le filtre intention des liens App support dans votre balise d'application.Assurez-vous de remplacer le xxxx par votre lien Domaine. (Si vous ne l'avez pas configuré votre pleine application native à utiliser Branch comme Android App Liens vous pouvez suivre les étapes mentionnées here et here.)

<application 
    ...... 

    <intent-filter android:autoVerify="true"> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="https" android:host="xxxx.app.link" /> 
     <data android:scheme="https" android:host="xxxx-alternate.app.link" /> 
    </intent-filter> 

</application> 

4. extraient des données de lien profond de la Direction

Ajouter Initiation de branche dans les activités configurées pour s'ouvrir à partir d'un clic de lien afin de recevoir les paramètres de lien profond. Cela renverra les données de lien profond du lien de référence.

protected void onStart() { 
    super.onStart(); 
    Branch.getInstance().initSession(new Branch.BranchReferralInitListener() { 
    @Override 
    public void onInitFinished(JSONObject referringParams, BranchError error) { 
     Log.d("Branch","onInitFinished() with deep link data: " + referringParams); 
    } 
    }); 
} 

5. Configurez la liaison profonde App instantanée à votre pleine application

Pour convertir votre utilisateur qui vient d'arriver dans votre application instantanée à votre pleine application native, SDK Branch propose des méthodes pratiques pour vérifier pour les types d'application et la conversion complète de l'application. Cela élimine la dépendance à l'aide du SDK de Google IA («com.google.android.instantapp»). Voici quelques-unes des méthodes:

Branch.isInstantApp()

Cette méthode vérifie de commodité si la version actuelle de l'application cours d'exécution est App instantanée ou Android complète App

Branch.showInstallPrompt()

Cette méthode montre une installation rapide pour l'application Android complète, vous permettant un moyen facile de transmettre des données profondes Branch à l'application complète à travers le processus d'installation.

+0

Quelle est la méthode recommandée pour l'ouverture du lien de l'application Branch.io à déclencher lors de la navigation d'une partie de l'application à l'autre? –

+0

Je pense que ci-dessus vient directement de https://dev.branch.io/marketing-channels/android-instant-apps/guide/? Comme mentionné, j'ai suivi ces instructions. –

+0

@ JohnO'Reilly obtenez-vous toujours + clicked_branch_link: false. En outre, obtenez-vous les paramètres de lien dans votre application standard correctement? –

1

Sojan de la Direction générale ici Si vous essayez de lien profond vers une nouvelle fonctionnalité d'une autre application instantanée apk Branch Unfortunetely ne soutient pas cette fonctionnalité maintenant.

Si vous essayez d'obtenir des paramètres de lien profond à l'ouverture d'une activité B dans une nouvelle fonctionnalité de l'activité A à partir d'une autre fonction d'une application installée, vous pouvez l'obtenir de la manière suivante.

ActivityA.java

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("yourBranchLink")); 
intent.putExtra("branch","yourBranchLink"); 
intent.putExtra("branch_force_new_session",true); 

Hope this helps

+0

Merci Sojan, je vais essayer. –

+0

Sojan, réalise ceci, je devrais créer un lien rapide au tableau de bord de Branch et l'utiliser sur Uri.parse ("yourBranchLink"), ai-je raison? Et puis, mettre un filtre d'intention spécifique dans le manifeste pour ce lien? –

+0

@GuilhermeLimaPereira Vous pouvez le faire en créant un lien rapide à partir du tableau de bord. Aussi, si vous essayez de le faire à partir de votre application, vous pouvez générer dynamiquement un lien de branche et l'utiliser comme expliqué ici. (Vous avez besoin d'un filtre d'intention dans le manifeste) https://github.com/BranchMetrics/android-branch-deep-linking#creating-a-deep-link –