Branch.io链接无法在应用程序中运行

时间:2017-05-06 16:56:40

标签: android deep-linking branch.io

我们在Android应用程序中集成了分支sdk。以下是清单详细信息。

    <intent-filter>
            <data
                android:host="open"
                android:scheme="example" />
            <data
                android:host="bnc.lt"
                android:scheme="https" />

            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>

初始化代码如下

Branch branch = Branch.getInstance();
        branch.initSession(new Branch.BranchReferralInitListener() {
            @Override
            public void onInitFinished(JSONObject referringParams, BranchError error) {
                if (error == null) {
                    // params are the deep linked params associated with the link that the user clicked before showing up
                    Log.i("BranchConfigTest", "deep link data: " + referringParams.toString());

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

以下是不起作用的情景。

1.如果我们点击app中的分支链接,上面代码段中的referralParams为空。如果链接来自app外部,我们就能以正确的方式接收referralParams中的JSON字符串。

我无法弄清楚这个问题。

3 个答案:

答案 0 :(得分:2)

亚历克斯的答案是当前的官方回应!这是一个不受支持的非官方解决方法,我刚刚使用了已弃用的'shouldOverrideUrlLoading'。您可以覆盖webview客户端以处理分支特定链接,然后使用我们的HTTPS API获取链接数据,而无需重置会话或打开/关闭其他应用程序。获得此数据后,请进行渲染。

在应用内的网页浏览中获取链接数据,解决方法,强调解决方法

private static final String BRANCH_DOMAIN = "yourdomain.app.link";
  1. 创建一个webview客户端,设置为webview对象:

    public boolean shouldOverrideUrlLoading(WebView view,String url){ if(url.contains(BRANCH_DOMAIN)){     //命中端点并解析数据 - &gt;加载数据 } else {     view.loadUrl(URL); } 返回true; }

  2. 如何点击端点填写上述评论 info - https://github.com/BranchMetrics/branch-deep-linking-public-api#endpoint-3

  3. 示例:curl“https://api.branch.io/v1/url?url=URL_ENCODED_URL_TO_FETCH&branch_key= ...”

    ^我不能强调强调这是我刚刚提出的一种不支持的方法,所以如果它停止工作或不理想,不要抓我的眼睛/代表,只是试图建议创造性的解决方案!

答案 1 :(得分:1)

来自Branch的Alex:这是预期的。我们的链接基础结构不是为处理从同一个应用程序内部打开的链接而设计的,所以不幸的是我们无法支持这个特定的实现。

答案 2 :(得分:0)

希望它可以帮助他人。解决此问题的方法是,如果要在textview中显示链接,请在textview的布局设计中设置属性android:autoLink="web",并在kotlin类中像这样链接化

val spannable = SpannableString(text//your link)
Linkify.addLinks(spannable, Linkify.WEB_URLS)
val linksPresent = Linkify.addLinks(spannable, Linkify.ALL)
Linkify.addLinks(spannable, 0)

在您的textview中设置链接移动方法,例如

textView?.movementMethod = LinkMovementMethod()

它将要做的是,它使应用程序在浏览器中打开链接,并从浏览器中将其重定向到应用程序,以便分支机构能够捕获该链接。它对我有用。