2016-08-27 1 views
0

私はこの文書に従っていますが、何が間違っているのか分かりません。Branch.ioで紹介システムを実装する方法

マニフェスト:

<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ストアが開き、ダウンロードできるようになりますが、クレジットは取得されず、影響を受けていないユーザーは表示されません私は間違ったことをする必要があります。

enter image description here

答えて

1

あなたが電気ショック療法、エラーを受け、または(タグ「ブランチ」をログ)支店への接続に失敗している場合には言及せず間違っているかを把握するのは難しいです。

ここでは実装のヒントを紹介します。まず、onStart()ではなく、Applicationクラスで初期化する必要があります。そして、あなたは何のApplicationクラスを持っていない場合は、その後のonCreate(に初期化)のみ

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

     Branch.getAutoInstance(this); // instantiate 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()); 
         } 
        } 
       }); 

を受け取るなどの情報の取得を開始することができます私は思います何かがあなたのために働いていない可能性がある最大の理由は、リクエストを非同期的に行う必要があるということです。 AsynTaskを使用します。あなたが持っている支店のURLを打つ。より多くの例については

は、他の記事を参照してください。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

そして、あなたはあなたの実装を確認するために、直接支店に連絡することができます。乾杯!

+1

アレックス支店:@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)を送信して、チームがバックエンドでも掘り下げられるようにすることです。 –

関連する問題