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

Posted

技术标签:

【中文标题】深度链接有时会打开错误的活动【英文标题】:Deep linking sometimes opens wrong activity 【发布时间】:2020-05-08 14:46:18 【问题描述】:

我们在深度链接方面遇到了一些问题。我们有两个深度链接提供商。 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>

【问题讨论】:

【参考方案1】:

终于找到了导致这个问题的问题。

我们的动态链接域为 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>

【讨论】:

【参考方案2】:

这里有个分店-

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

【讨论】:

以上是关于深度链接有时会打开错误的活动的主要内容,如果未能解决你的问题,请参考以下文章

Android 8.0+ 深度链接仅在应用程序被杀死时才首先打开启动器活动

多个意图打开错误活动的待处理意图

在子中访问打开的工作簿有时会生成错误 1004“对象 '_Global' 的 'Sheets' 方法未失败”

手机:下载 docx 文件,有时会显示文件已损坏的错误

有时我打开网页总是会提示“当前页的脚本发生错误”请问这是怎么回事?

如何在 Firebase 云消息传递 (FCM) 中使用深度链接