防止在原始应用程序的浏览器中打开 Deeplink

Prevent Deeplink from being opened within the browser of the originating app

我正在使用 Branch.io 从 Salesforce 应用程序深层链接到我的 Cordova 应用程序。但是,当我单击 Salesforce 应用程序中的深层链接时,它只是在 Salesforce 应用程序内的浏览器中打开我的应用程序,而不是实际将我带到我的应用程序。似乎我应该使用 <intent-filter/> 来实现这一点,但它似乎无法让我退出原始 Salesforce 应用程序。这是我的 <intent-filter/> 目前的情况:

 <intent-filter android:name="io.branch.sdk.UriScheme">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="myapp" />
 </intent-filter>
 <intent-filter android:autoVerify="true" android:name="io.branch.sdk.AppLink">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:host="myapp.app.link" android:scheme="https" />
</intent-filter>

我还需要哪些其他意图操作或类别?

您应该只需要此处列出的意图过滤器:

如果它是在 Salesforce 浏览器中打开您的应用程序,则可能是 Salesforce 阻止用户从中进行深度链接。

真正最终解决这个问题的是进入 AndroidManifest.xml 并在我的主 activity 上设置 android:launchMode="singleTask"

我知道 in the android docs it says singleTask is not recommended. I believe that's because it prevents you from going back but we take over the functionality of the hardware back button so that's not relevant. Also according to this SO answer,在我们的情况下这似乎是正确的做法。