2

想象一下AndroidManifest.xml准备好支持应用程序链接:

 <activity ...>

            <!-- Intent filter specifying that this activity is a launcher activity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <!-- Intent filter for an app link: https://www.example.com/books -->
            <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:scheme="https"
                    android:host="www.example.com"
                    android:pathPrefix="/books" />
            </intent-filter>


</activity>

所以此时应用程序链接正在工作:assetlinks.json被上传到服务器上,并且当用户在浏览器中点击类似的链接时https://www.example.com/books,用户会自动进入应用程序(不显示应用程序选择器对话框)。

现在,稍后我们通过推送通知添加了对深度链接的支持:您通过 Firebase 收到通知,点击它,然后Intent使用 uri开始https://com.application.package/books。一些活动处理此意图并将用户重定向到适当的屏幕。

现在清单看起来像这样:

 <activity ...>

            <!-- New intent filter to support 
                 deeplinks of type: https://com.application.package/books -->

            <intent-filter android:autoVerify="false">
                <action android:name="android.intent.action.VIEW" />

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

                <data
                    android:host="com.application.package"
                    android:pathPrefix="/books"
                    android:scheme="https" />

            </intent-filter>

            <!-- // the other 2 intent filters follow bellow.. -->

</activity>

由于这个添加,我们注意到应用程序链接停止工作(应用程序选择器对话框正在向用户显示),因此经过一些试验和错误调查,我们发现事实上,在深度链接意图过滤器中有这三个声明, 是什么破坏了应用程序链接:

<action android:name="android.intent.action.VIEW" />

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

如果从深层链接意图过滤器中删除上述<action /><category ../>标签,则应用链接将再次开始工作。
但是,结果是,现在深层链接不再起作用,在这种情况下这是意料之中的,因为我们使用的是 SDK,而该 SDK 专门寻找.action.VIEW.

为什么添加这个新的意图过滤器会导致应用链接停止工作?非常感谢您的任何建议。

4

0 回答 0