1

紹介コード システムを実装しようとしており、Branch.io Metrics ライブラリを使用しています。私が直面している問題は、ドキュメントが良くない (機能しない) ことと、コードを生成できないことです。

ドキュメント: https://github.com/BranchMetrics/Branch-Android-SDK#register-an-activity-for-direct-deep-linking-optional-but-recommended

ライブラリの追加など、私が行った手順は次のとおりです。

1)jarを取得し、libsフォルダーに追加し、以下を依存関係に追加しました

compile files('libs/branch-1.5.9.jar')

2)アプリケーションを拡張するアプリケーションクラスに、次を追加しました

if (DEBUG) {
   Branch.getAutoTestInstance(this);
} else {
    Branch.getAutoInstance(this);
}

3) AndroidManifest.xml に以下を追加しました

<meta-data android:name="io.branch.sdk.BranchKey" android:value="@string/bnc_app_key" />

4)すべてをテストしているアクティビティで、 onStart() メソッドに次を追加しました

@Override
protected void onStart() {
    // note that branch is a global variable (Branch branch;)
    if (DEBUG) {
        branch = Branch.getTestInstance(this.getApplicationContext());
    } else {
        branch = Branch.getInstance(this.getApplicationContext());
    }

    branch.initSession(new BranchReferralInitListener() {
        @Override
        public void onInitFinished(JSONObject jsonObject, BranchError branchError) {
            if (branchError == null) {}        

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

上記から、branchError が null の場合 (競合がない場合) にデータを取得できる branch.io セッションとリスナーを正常に作成できたと思います。

まだ onStart() の中にいる間に、紹介コードを生成しようとしています。したがって、 onStart() 全体は次のようになります。

@Override
protected void onStart() {
    // note that branch is a global variable (Branch branch;)
    if (DEBUG) {
        branch = Branch.getTestInstance(this.getApplicationContext());
    } else {
        branch = Branch.getInstance(this.getApplicationContext());
    }

    branch.initSession(new BranchReferralInitListener() {
        @Override
        public void onInitFinished(JSONObject jsonObject, BranchError branchError) {
            if (branchError == null) {}        

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

    branch.getReferralCode(5, new BranchReferralInitListener() {
        @Override
        public void onInitFinished(JSONObject jsonObject, BranchError branchError) {
            try {
                String code = jsonObject.getString("referral_code");
                Log.d(TAG, "code: " + code);
            } catch (JSONException e) {
                Log.e(TAG, "JSONException :: " + e);
                e.printStackTrace();
            }
        }
    });
}

5) onNewIntent オーバーライド メソッドを追加しました

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

私のアプリは onInitFinished リスナーの内部に到達しないため、コードを取得できません。私が見逃したことについての提案は大歓迎です。このスレッドがドキュメントに欠けている穴を埋めることを願っています。

4

1 に答える 1

2

次のコード行が適切に閉じられており、構文エラーがスローされていないと仮定します。

branch.initSession(new BranchReferralInitListener() {
    @Override
    public void onInitFinished(JSONObject jsonObject, BranchError branchError) {
        if (branchError == null) {}    
     }, this.getIntent().getData(), this); // parenthesis wasnt here

まず、 Applicationクラスを拡張する場合は、 Application クラスのonCreate()コールバック内でブランチを初期化する必要があります。

public void onCreate() {
    super.onCreate();
    Branch.getInstance(this);
}

ここにある Branch サンプル コードに従って、実際に呼び出す必要があるのは次のとおりです。

Branch.getInstance();

それ以外の:

Branch.getInstance(getApplicationContext());

アクティビティのonCreateコールバック内。それが処理されると、Branch SDK は適切に作成されます。

于 2015-06-30T18:53:53.210 に答える