Android 深层链接路径、路径前缀或路径模式无效
Android deeplink path, pathPrefix or pathPattern not working
我正在尝试让 Android 深度链接只对特定的 url 有效,例如:
所以http://books.com/about一直链接到网页
我的 AndroidManifest.xml
中的此配置有效并在我的应用程序中打开了正确的页面。问题是这匹配 books.com
上的每个页面
<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="@string/custom_url_scheme" />
<data android:scheme="https" android:host="books.com" />
</intent-filter>
当我把数据部分改成:
<data android:scheme="https" android:host="books.com" android:path="/book/nice-book-1" />
或
<data android:scheme="https" android:host="books.com" android:pathPrefix="/book" />
或
<data android:scheme="https" android:host="books.com" android:pathPattern="/book/..*" />
仅匹配 /book
后跟一个 slug,它根本不起作用。
我已经在 Whosebug 上发现了许多类似的问题,但它们要么已经过时,要么无法处理 url 与 slug 一起工作的情况。
- Intent filter using path,pathPrefix, or pathPattern
- How to use PathPattern in order to create DeepLink Apps Android?
有没有人 运行 在只匹配少数 url 与 slug 时遇到同样的问题?
我花了很长时间才弄明白这一点。所以我会回答我自己的问题,以节省其他人宝贵的时间。
事实证明,当 运行 设备上的 Android 应用程序通过 Android studio
<data android:scheme="https" android:host="books.com" />
是唯一可行的路径。
使用时:
<data android:scheme="https" android:host="books.com" android:path="/book/nice-book-1" />
或
<data android:scheme="https" android:host="books.com" android:pathPrefix="/book" />
这些仅在您的设备上使用 SIGNED 版本的应用程序时有效。这可能是因为在您的 assetlinks.json
中有一个 sha256_cert_fingerprints
只有在使用已签名的应用程序时才能验证。
我正在尝试让 Android 深度链接只对特定的 url 有效,例如:
所以http://books.com/about一直链接到网页
我的 AndroidManifest.xml
中的此配置有效并在我的应用程序中打开了正确的页面。问题是这匹配 books.com
<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="@string/custom_url_scheme" />
<data android:scheme="https" android:host="books.com" />
</intent-filter>
当我把数据部分改成:
<data android:scheme="https" android:host="books.com" android:path="/book/nice-book-1" />
或
<data android:scheme="https" android:host="books.com" android:pathPrefix="/book" />
或
<data android:scheme="https" android:host="books.com" android:pathPattern="/book/..*" />
仅匹配 /book
后跟一个 slug,它根本不起作用。
我已经在 Whosebug 上发现了许多类似的问题,但它们要么已经过时,要么无法处理 url 与 slug 一起工作的情况。
- Intent filter using path,pathPrefix, or pathPattern
- How to use PathPattern in order to create DeepLink Apps Android?
有没有人 运行 在只匹配少数 url 与 slug 时遇到同样的问题?
我花了很长时间才弄明白这一点。所以我会回答我自己的问题,以节省其他人宝贵的时间。
事实证明,当 运行 设备上的 Android 应用程序通过 Android studio
<data android:scheme="https" android:host="books.com" />
是唯一可行的路径。
使用时:
<data android:scheme="https" android:host="books.com" android:path="/book/nice-book-1" />
或
<data android:scheme="https" android:host="books.com" android:pathPrefix="/book" />
这些仅在您的设备上使用 SIGNED 版本的应用程序时有效。这可能是因为在您的 assetlinks.json
中有一个 sha256_cert_fingerprints
只有在使用已签名的应用程序时才能验证。