2016-08-27 3 views
0

Ich habe die Dokumente befolgt, ich weiß nicht, was los ist, ich würde wirklich einige Einblicke zu schätzen wissen.So implementieren Sie das Referral-System mit Branch.io

Manifest:

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    ... 
    android:name="io.branch.referral.BranchApp"> 
    <meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_123456789asdf" /> 
    <activity 
     ...> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter android:label="indexed_on_SEO"> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data 
       android:scheme="http" 
       android:host="www.schoolminder.info" 
       android:pathPrefix="/home"/> 
     </intent-filter> 
     <intent-filter> 
      <data 
       android:scheme="http" 
       android:host="open" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 
    </activity> 

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

</application> 

Die Aktivität

@Override 
protected void onStart() { 
    super.onStart(); 
    Branch branch = Branch.getInstance(); 

    branch.initSession(new Branch.BranchReferralInitListener(){ 
     @Override 
     public void onInitFinished(JSONObject referringParams, BranchError error) { 
      if (error == null) { 
       Log.i("MyApp", "deep link data: " + referringParams.toString()); 
      } else { 
       Log.i("MyApp", error.getMessage()); 
      } 
     } 
    }, this.getIntent().getData(), this); 

    String userID = new BigInteger(130, new SecureRandom()).toString(32); 
    Branch.getInstance().setIdentity(userID); 
} 

@Override 
protected void onNewIntent(Intent intent) { 
    this.setIntent(intent); 
} 

Das Fragment, wenn die Einladung zusammen:

BranchUniversalObject branchUniversalObject = new BranchUniversalObject() 
      .setCanonicalIdentifier("item/12345") 
      .setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC) 
      .addContentMetadata("property1", "blue") 
      .addContentMetadata("property2", "red"); 

    LinkProperties linkProperties = new LinkProperties() 
      .setChannel("facebook") 
      .setFeature("sharing"); 

    branchUniversalObject.generateShortUrl(getActivity(), linkProperties, new Branch.BranchLinkCreateListener() { 
     @Override 
     public void onLinkCreate(String url, BranchError error) { 
      if (error == null) { 
       link = url; 
      } 
     } 
    }); 

    Branch.getInstance(getActivity().getApplicationContext()).loadRewards(new         Branch.BranchReferralStateChangedListener() { 
     @Override 
     public void onStateChanged(boolean changed, BranchError error) { 
      int credits = Branch.getInstance().getCredits(); 
      Branch.getInstance().redeemRewards(credits); 
      Log.i("MyApp", credits+""); 
     } 
    }); 

Ich habe die Links für jede Plattform in den Branch Dashboard-Einstellungen behandelt.

Was passiert ist, wenn ich diesen Link an jemanden sende, öffnet es den Play Store wie erwartet und er kann es herunterladen, aber ich bekomme nicht die Credits, und es zeigt keine empfohlenen Benutzer nicht Influencers so Ich muss etwas falsch machen.

enter image description here

Antwort

1

Es ist schwer, herauszufinden, was falsch ist, ohne dass Sie erwähnen, wenn Sie Fehler erhalten, oder andernfalls zu Branch (lügt den Tag „Zweig“), ect zu verbinden.

Hier sind einige Tipps für die Implementierung. Zuerst sollten Sie in Ihrer Application-Klasse initialisieren, nicht in onStart(). Und wenn Sie keine Anwendungsklasse, dann initialisieren in onCreate() nur

public class YourApplication extends Application { 
@Override 
    public void onCreate() { 

     Branch.getAutoInstance(this); // instantiate branch 

    } 
} 

Je nachdem, was Sie verwenden, können sagen, Sie verwenden Empfehlungscodes Sie eine Identität benötigen, die ich sehe, Sie setzen. Dies geschieht durch Referenzieren eines Branch-Objekts.

Branch branch = Branch.getInstance(context); 

// set identity 
branch.setIdentity("your user id"); 

Danach können Sie Abrufen von Informationen wie zum Beispiel die Aufnahme eines Empfehlungscode

branch.getReferralCode(null, defaultRefereeReward, null, Branch.REFERRAL_BUCKET_DEFAULT, 
       Branch.REFERRAL_CODE_AWARD_UNLIMITED, Branch.REFERRAL_CODE_LOCATION_BOTH, 
       new Branch.BranchReferralInitListener() { 

        @Override 
        public void onInitFinished(JSONObject jsonObject, BranchError branchError) { 
         if (FrameworkUtils.checkIfNull(branchError)) { 
          try { 
           // get and set referral code for current user 
           String currentCode = jsonObject.getString("referral_code"); 

           // you can store the code in a model class if want 
           ReferralInfoModel.setCurrentReferralCode(currentCode); 

          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } else { 
          Logger.e(TAG, branchError.getMessage()); 
         } 
        } 
       }); 

Es beginnen, sind andere Methoden, die Sie Geschichte verfolgen, wie

Branch.getCreditHistory() 

ich das denken können Der größte Grund, warum die Dinge für Sie möglicherweise nicht funktionieren, ist, dass Sie Ihre Anfragen asynchron ausführen müssen. Verwenden Sie AsynTask. Tippe auf die Zweig-URL, die du hast.

Weitere Beispiele beziehen sich auf andere Beiträge: How to generate referral code using Branch.io Metrics?

und die Dokumentation: https://github.com/BranchMetrics/Branch-Android-SDK#register-an-activity-for-direct-deep-linking-optional-but-recommended

Und Sie können Niederlassung wenden Sie sich direkt Ihre Implementierung zu bestätigen. Prost!

+1

Alex von Branch hier: @portfolioBuilder, danke für die tolle Antwort! Dieses Verhalten könnte auch durch unsere Anti-Fraud-Systeme um Empfehlungen verursacht werden. Wir haben einen [Debugging-Modus] (https://dev.branch.io/getting-started/integration-testing/guide/ios/#use-debug-mode-to-simulate-fresh-installs), um dabei zu helfen. Diese Probleme lassen sich nur schwer entwirren. Am einfachsten ist es, wenn Sie ein [integrations ticket] (https://support.branch.io/support/tickets/new) einreichen, damit unser Team auch auf das Backend zugreifen kann. –

Verwandte Themen