我们在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字符串。
我无法弄清楚这个问题。
答案 0 :(得分:2)
在应用内的网页浏览中获取链接数据,解决方法,强调解决方法
private static final String BRANCH_DOMAIN = "yourdomain.app.link";
创建一个webview客户端,设置为webview对象:
public boolean shouldOverrideUrlLoading(WebView view,String url){ if(url.contains(BRANCH_DOMAIN)){ //命中端点并解析数据 - &gt;加载数据 } else { view.loadUrl(URL); } 返回true; }
如何点击端点填写上述评论 info - https://github.com/BranchMetrics/branch-deep-linking-public-api#endpoint-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()
它将要做的是,它使应用程序在浏览器中打开链接,并从浏览器中将其重定向到应用程序,以便分支机构能够捕获该链接。它对我有用。