在同一应用中打开 branch.io link

Open branch.io link in same app

我尝试在当前打开的应用程序中打开一个带有 branch.io link 的新 activity。 以下代码有效。这里的问题是浏览器打开了,这调用了新的 activity.

Intent actionIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://sample.test-app.link/foo"));
startActivity(actionIntent);

我知道浏览器访问 branch.io 的网站,获取数据并调用另一个 link,例如 intent://....。我正在寻找一种方法来从网络中获取意图-link (intent://)-link (https).

谢谢!

我认为您可以通过以下步骤实现:

在 activity 的意图过滤器下的清单文件中放置:

  <data android:host="example.com" android:scheme="http" ></data>

现在您的可点击 link 应该是这样的:

http://example.com/tutor/

在activity中,您可以根据URL

对代码进行任何条件设置
Uri data = getIntent().getData();
    if(data!=null) {
        List<String> params = data.getPathSegments();
        String first = params.get(0); // "status"
        String second = params.get(1);
    }

解决方案是启用 App links 并在 link 设置中添加 SHA256 指纹。

在您的应用中,您应该设置一个新的 intent 过滤器以获取 http 请求。

<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="https" android:host="xxxx.test-app.link" />
</intent-filter>

现在您的应用程序接收并处理 links,浏览器将不会打开。

描述了步骤 in the docs

Branch SDK 并非旨在促进从应用程序自己的网络视图路由回应用程序。也就是说,听起来您已经取得了成功,这太棒了。

关于获取从 Branch link 创建的 Intent 字符串的最简单方法:在安装了该应用程序的设备上,将 Branch link 粘贴到 Chrome 地址栏然后点击进入。意图字符串将出现在地址栏和结果网页上出现的错误中。

以这种方式检索 intent 字符串是可行的,因为 Chrome 不支持像这样在地址栏中输入 intent 字符串来打开应用程序。