【问题标题】:How to generate referral code using Branch.io Metrics?如何使用 Branch.io Metrics 生成推荐代码?
【发布时间】:2015-09-12 19:37:26
【问题描述】:

我正在尝试实现推荐代码系统,并且我正在使用 Branch.io Metrics 库。我面临的问题是文档不好(不起作用),我无法生成代码

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

这是我已采取的步骤,包括添加库。

1) 拿起罐子,添加到我的 libs 文件夹中,并将以下内容添加到我的依赖项中

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

2) 在我扩展 Application 的应用程序类中,我添加了以下内容

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) 在我正在测试所有内容的 Activity 中,我在 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.io 会话和一个侦听器,如果 branchError 为空(没有冲突),我将允许我检索数据

虽然仍在 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 侦听器内部,因此我无法检索任何代码。对我遗漏的任何建议表示赞赏,希望此线程能够填补文档缺少的漏洞。

【问题讨论】:

    标签: android referrals branch.io


    【解决方案1】:

    我将假设以下代码行已正确关闭并且不会引发语法错误:

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

    根据here找到的Branch示例代码,您实际上需要调用:

    Branch.getInstance();
    

    代替:

    Branch.getInstance(getApplicationContext());
    

    在您的活动中onCreate 回调。一旦处理好,Branch SDK 就会正确创建。

    【讨论】:

    • 我实际上发现了这个问题。冲突是,Branch 在我实施后数小时内进行了更改,他们希望清单中的以下元数据 在他们没有划分这两个键之前,所以我的代码不起作用,因为我没有使用测试键
    • 您的建议也有帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2023-03-22
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多