2017-05-06 3 views
0

Wir haben Niederlassung sdk in unserer Android App integriert. Das Folgende sind die Manifestdetails.Branch.io Links nicht aus der App heraus arbeiten

<intent-filter> 
      <data 
       android:host="open" 
       android:scheme="example" /> 
      <data 
       android:host="bnc.lt" 
       android:scheme="https" /> 

      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 

Der init-Code Stück ist als

Branch branch = Branch.getInstance(); 
     branch.initSession(new Branch.BranchReferralInitListener() { 
      @Override 
      public void onInitFinished(JSONObject referringParams, BranchError error) { 
       if (error == null) { 
        // params are the deep linked params associated with the link that the user clicked before showing up 
        Log.i("BranchConfigTest", "deep link data: " + referringParams.toString()); 

     }, this.getIntent().getData(), this); 

folgt folgend ist das Szenario, das nicht funktioniert.

1.Wenn wir innerhalb der App auf einen Zweiglink klicken, ist das ReferralParams im obigen Codeteil leer. Wenn die Links von außerhalb der App stammen, können wir den JSON String in referralParams in der richtigen Weise empfangen.

Ich bin nicht in der Lage, das Problem zu verstehen.

Antwort

1

Alex von Ast hier: wird diese erwartet. Unsere Verknüpfungsinfrastruktur ist nicht dafür ausgelegt, Links zu handhaben, die von derselben App aus geöffnet werden. Daher können wir diese spezielle Implementierung leider nicht unterstützen.

+0

Hallo Alex, Würden Sie irgendwelche Workarounds vorschlagen? Wir senden in der Regel Support-Links für Inhalte an die Nutzer innerhalb der App, damit sie sie direkt anzeigen können. – karan

+0

Das ist mir nicht bewusst, aber ich werde mit unserem Android-Entwicklerteam nachsehen, ob es neue Entwicklungen gibt! –

1

Alex Antwort ist die aktuelle, offizielle Antwort! Hier ist eine nicht unterstützte inoffizielle Problemumgehung, die ich gerade mit dem veralteten "shouldOverrideUrlLoading" erhalten habe. Sie können den Webview-Client außer Kraft setzen, um Branch-spezifische Links zu behandeln, und dann unsere HTTPS-API verwenden, um Linkdaten abzurufen, ohne die Sitzung zurückzusetzen oder andere Apps zu öffnen oder zu schließen. Sobald Sie diese Daten haben, rendern Sie sie.

Erste Verbindungsdaten innerhalb eines webview innerhalb einer App, dieses Problem zu umgehen Schwerpunkt auf Abhilfe

private static final String BRANCH_DOMAIN = "yourdomain.app.link"; 
  1. erstellen webview Client, auf webview Objekt:

    public boolean shouldOverrideUrlLoading (WebView Ansicht, url String) { if (url.contains (BRANCH_DOMAIN)) {// Endpunkt treffen und Daten analysieren -> Lastdaten } else { view.loadUrl (URL); } Rückkehr wahr; }

  2. Wie Endpunkt schlagen oben Kommentar zu füllen info - https://github.com/BranchMetrics/branch-deep-linking-public-api#endpoint-3

Beispiel: curl "https://api.branch.io/v1/url?url=URL_ENCODED_URL_TO_FETCH&branch_key= ..."

^Ich kann den Schwerpunkt auf diesem Wesen nicht betonen, eine nicht unterstützte Methode, die ich gerade erfunden habe, also klaue nicht meine Augen/Rep out, wenn es nicht mehr funktioniert oder nicht ideal ist, versuche nur, kreative Lösungen vorzuschlagen!

Verwandte Themen