Android 应用索引 - 使用 GET 参数对 url 进行深度链接,例如 www.abc.com?parameter=value

Android app indexing - deep linking for urls with GET params like www.abc.com?parameter=value

我正在创建一个 intent-filter 以便过滤我的应用程序 url,例如 https://www.hotelsclick.com/?hotel_id=135738

我在文档中看到我应该创建一个像

这样的意图过滤器
 <intent-filter android:label="@string/filter_title_viewgizmos">
     <action android:name="android.intent.action.VIEW" />
     <!-- Accepts URIs that begin with "http://example.com/gizmos” -->
     <data android:scheme="http"
           android:host="example.com"
           android:pathPrefix="/gizmos" />
     <category android:name="android.intent.category.DEFAULT" />
     <category android:name="android.intent.category.BROWSABLE" />
 </intent-filter>

这个 intent-filter 应该像“http://example.com/gizmos?1234, http://example.com/gizmos/1234, http://example.com/gizmos/toys/1234”这样过滤 URL 个“

很好,但是...我的 URL 不同,它就像 http://example.com?toys=1234 因为它在主页中有一个命名的 GET 参数,即 hotel_id。

如何过滤此类 URL?是否有更多参数可以放入 intent-filter 定义中?

编辑:我在 Manifest.xml

中添加了以下意图过滤器
        <intent-filter android:label="@string/app_name">
            <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="hotelsclick.com" />
            <data android:scheme="http"
                android:host="hotelsclick.com" />
        </intent-filter>

我可以通过提供此 ADB 命令打开应用程序

adb shell am start -a android.intent.action.VIEW -d "http://hotelsclick.com?hotel_id=135738" com.towers.hotelsclick

但它不适用于使用 deep-link 工具自行生成的页面:https://developers.google.com/app-indexing/webmasters/test?hl=it

我在网页的 editText 中输入以下 URI:"android-app://com.towers.hotelsclick/hotelsclick.com?hotel_id=135738" 我得到了这个页面:https://applinktest.appspot.com/app-link.html?url=android-app%3A%2F%2Fcom.towers.hotelsclick%2Fhotelsclick.com%3Fhotel_id%3D135738

可以看到页面中的link是intent://#Intent;scheme=hotelsclick.com?hotel_id=135738;package=com.towers.hotelsclick;结束,我希望这个 intent-link 在我之前用于 adb 命令的相同 phone 上点击移动设备时由应用程序本身打开。但它不起作用,直接将我带到 google Play 商店,建议从那里打开应用程序

所以,既然我可以通过 ADB 使 intent-filter 工作,但不能使用适当的 link,我能说我成功了吗?

谢谢

生成的 link 无效。应该是

intent://hotelsclick.com?hotel_id=135738#Intent;scheme=http;package=com.towers.hotelsclick;end

而不是

intent://#Intent;scheme=hotelsclick.com?hotel_id=135738;package=com.towers.hotelsclick;end