深层链接有时会打开错误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>
我们在深度 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>