2016-08-27 9 views
0

Я следил за документами, я не знаю, что случилось, я бы очень признателен за понимание.Как реализовать систему рефералов с 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> 

Активность

@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); 
} 

фрагмент, когда приглашение сделан:

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+""); 
     } 
    }); 

Я занимался ссылками для каждой платформы в настройках панели филиалов.

Что происходит, когда я отправляю эту ссылку кому-то, он открывает Play Store, как и ожидалось, и он может его загрузить, но я не получаю кредиты, и он не показывает никаких реферированных пользователей, не влияющих на него, поэтому Я должен делать что-то неправильно.

enter image description here

ответ

1

Это трудно понять, что это неправильно, не вы упоминая, если вы получаете ошибки, или не подключаться к Branch (лог «ветвь» тег), ЭСТ.

Вот несколько советов, хотя для реализации. Во-первых, вы должны инициализировать в своем классе Application, а не в onStart(). И если у вас нет класса Application, затем инициализировать в OnCreate() только

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

     Branch.getAutoInstance(this); // instantiate branch 

    } 
} 

В зависимости от того, что вы используете, позволяет сказать, что вы используете коды рефералов вам нужно тождество, которое я вижу, вы установили. Это делается для ссылки на объект Branch.

Branch branch = Branch.getInstance(context); 

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

После этого, вы можете получать такую ​​информацию, как получить код направления

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()); 
         } 
        } 
       }); 

Существуют и другие методы, которые можно использовать для отслеживания истории, такие как

Branch.getCreditHistory() 

Я думаю, самая большая причина, по которой вы не можете работать для вас, заключается в том, что вам нужно делать ваши запросы асинхронно. Используйте AsynTask. Ударьте в адрес филиала, который у вас есть.

Дополнительные примеры относятся к другим должностям: How to generate referral code using Branch.io Metrics?

И документация: https://github.com/BranchMetrics/Branch-Android-SDK#register-an-activity-for-direct-deep-linking-optional-but-recommended

И вы можете связаться непосредственно Branch, чтобы подтвердить выполнение. Ура!

+1

Alex from Branch здесь: @portfoliobuilder, спасибо за отличный ответ! Такое поведение также может быть вызвано нашими системами борьбы с мошенничеством вокруг рефералов. У нас есть [режим отладки] (https://dev.branch.io/getting-started/integration-testing/guide/ios/#use-debug-mode-to-simulate-fresh-installs), чтобы помочь в этом. Эти проблемы могут быть трудно распутывать, поэтому самым простым вариантом может быть подача [интеграционного билета] (https://support.branch.io/support/tickets/new), чтобы наша команда тоже могла копаться на бэкэнде. –

 Смежные вопросы

  • Нет связанных вопросов^_^