android 深度链接 - 第一个路径前缀是动态的,但第二个不是

android deeplinking - the first path prefix is dynamic, but the second not

我有一个 url,例如https://www.mobilePhoneSystem.com/{user}/registerDate/{date}。所以 {user} 路径前缀是动态的。我只需要处理包含 registerDate 的深层链接。 我在清单中写了这样的东西

<!-- Deep linking-->
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

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

            <data
                android:scheme="https"
                android:host="/www.mobilePhoneSystem.com"
                android:pathPrefix="/registerDate" />

        </intent-filter>
    </activity>

但是没有触发。当我在 mainfest 中添加任何用户时,例如pathPrefix=/user111/registerDate,它触发并工作正常。但是用户是动态的。那么我该如何处理这种深度链接呢?

您可以查看 navGraphs here

在导航图表中

<deepLink
    android:id="@+id/deepLink"
    app:uri="mobilePhoneSystem.com/{userId}/registerDate" />
       
<argument
    android:name="userId"
    app:argType="string"/>

这应该适合你:

android:pathPattern="/.*/registerDate/.*/"

说明 : 这 。强制执行“任何字符之一”的模式。 .* 强制执行“任何字符的任何数字(或 none!)”。

结合这两者,..* 强制执行“任意数量的任意字符,但至少必须提供一个”

您可以使用库,它会为您解决问题github.com/airbnb/DeepLinkDispatch 您甚至可以直接获取您的 {user} 和 {date} 而不会增加任何麻烦