深层链接有时会打开错误的活动

时间:2020-05-08 14:46:18

标签: android deep-linking firebase-dynamic-links branch.io

我们在深度链接方面遇到了一些问题。我们有两个深层链接提供程序。 Firebase和分支。我们的用户在单击Firebase链接时遇到问题,可以说打开活动A,但是打开活动B(用于分支)。不幸的是,我们无法复制它,但是它发生在我们的某些用户身上。而且,当发生这种情况时,它们始终可以复制。

这是我们拥有的Firebase设置

<activity android:name=".activity.FirebaseActivity"
    android:screenOrientation="portrait">
    <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:host="firebase.page.link"
        android:scheme="https" />
    </intent-filter>
</activity>

以及分支:

<!-- Branch URI scheme -->
            <intent-filter>
                <data
                    android:host="open"
                    android:scheme="branch" />

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

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

            <!-- Branch App Links -->
            <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:host="branch.app.link"
                    android:scheme="https" />
            </intent-filter>
        </activity>

2 个答案:

答案 0 :(得分:0)

这里的分行-

我们从未遇到过这个问题。 Firebase和Branch可以很好地并行工作。如果您单击“分支链接”,它将打开相应的活动。由于这种情况并非全面发生,因此建议您重新检查配置,看看是否存在可观察到的模式,然后尝试从头开始进行复制。

答案 1 :(得分:0)

最终找到了导致此问题的原因。

我们的动态链接域为{firebase-dynamic-domain} .page.link。但是,在某些情况下,当用户重定向到应用程序时,链接显示为

https:// {your-project} .firebaseapp.com&...

代替

https:// {firebase-dynamic-domain} .page.link?link = https:// {your-project} .firebaseapp.com&...

要解决此问题,您还可以为过滤器添加项目名称域,或者在启动器活动中捕获它

<activity android:name=".activity.FirebaseActivity"
    android:screenOrientation="portrait">
    <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:host="firebase.page.link"
        android:scheme="https" />
    </intent-filter>
    <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:host="{your-project}.firebaseapp.com"
        android:scheme="https" />
    </intent-filter>
</activity>