深层链接有时会打开错误activity

Deep linking sometimes opens wrong activity

我们在深度 linking 方面遇到了一些问题。我们有两个深度 linking 提供商。 Firebase 和分支机构。我们的用户在单击 Firebase link 时遇到问题,假设打开 activity A,但它打开了 activity B(用于 Branch)。不幸的是,我们无法重现它,但它发生在我们的一些用户身上。当这种情况发生时,它们总是可以重现的。

这是我们的 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>

这里是 Branchster -

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

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

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

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

而不是

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

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

<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>