深度链接、Android 应用链接、Firebase 动态链接和应用索引之间的区别 [关闭]

Posted

技术标签:

【中文标题】深度链接、Android 应用链接、Firebase 动态链接和应用索引之间的区别 [关闭]【英文标题】:Difference between Deep Links, Android App Links, Firebase Dynamic Links and App Indexing [closed] 【发布时间】:2019-04-04 08:26:45 【问题描述】:

下面是在导航组件中使用深层链接的解释:

https://developer.android.com/guide/navigation/navigation-deep-link

上面写着:

显式深层链接是深层链接的单个实例,它使用 PendingIntent 将用户带到您应用中的特定位置。当用户通过显式深层链接打开您的应用时,任务返回堆栈将被清除并替换为深层链接目标。

现在的问题是Deep LinksAndroid App LinksApp IndexingFirebase Dynamic Links 之间有什么区别,我们应该什么时候使用它们?

另外,还有一点需要我们全部设置好?

【问题讨论】:

检查 this 的应用索引和深层链接 【参考方案1】:

1) 深层链接: 例如,当去你的管并选择通过链接分享视频选项时。

然后复制链接并粘贴到记事本中并保存。然后在android设备(平板电脑/手机等)中打开文件。 然后单击链接,然后看看会发生什么。 如果有 youtube 应用程序意味着 android 操作系统要求用户选择一个选项 youtube 应用程序或浏览器等。 如果用户点击 youtube 应用,则链接会在 YouTube 应用中处理。

.深层链接是一个链接,它使 android 操作系统搜索能够处理文本/链接的合适应用程序,如果找到超过 1 个意味着它要求选择哪个是想要的。

我们可以让我们的应用使用深层链接。 通过 android manifest 中的 Intent 和 View 中的操作将应用所需的 Activity(单击链接时需要打开的 Activity)设为可浏览。

参考:

1)https://developer.android.com/training/app-links/deep-linking

示例代码:

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_view_http_gizmos">
        <action **android:name="android.intent.action.VIEW**" />
        <category android:name="android.intent.category.DEFAULT" />
        <**category android:name="android.intent.category.BROWSABLE**" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
    <intent-filter android:label="@string/filter_view_example_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />
    </intent-filter>
</activity>

【讨论】:

所以我知道深度链接。我想知道它与我提到的其他东西有什么不同。【参考方案2】:

Deep Links:

如您所知,Deep Link 是您应用中最简单的一个,它完全是本地的。可以通过单击特定模式URI 来触发活动。该模式在 android Manifest 中使用 intent-filter 定义。如果URI 存在多个处理程序,Android 系统允许用户从对话框中选择目标应用程序。很明显,如果您的应用程序没有安装在设备上,Deep Link 将不起作用。 URL查询参数携带的应用程序使用的附加数据。

要查看其用法示例,请参阅this

Android App Links:

Android App LinksDeep Links 相同,只是略有不同。您的应用可以将自己介绍为特定模式链接的默认处理程序。因此,当有多个应用程序处理目标链接时,您的应用程序会处理它而不显示应用程序选择对话框。此外,如果用户不希望应用程序成为默认处理程序,他们可以从设备的系统设置中覆盖此行为。 Android App Links 功能仅适用于 Android 6.0(API 级别 23)及更高版本。

要查看其用法示例,请参阅this

Dynamic Links:

Dynamic Links 消除了DeepLink 的弱点。使用Dynamic Links,您可以在所有平台(如 Android、ios 和 Web)上以类似的方式进行处理。它将用户从您的移动网站无缝转移到您的应用程序中的等效内容(如果用户尚未在她/他的设备上安装您的应用程序,则该内容将在应用程序安装后显示)。此外,您可以在 Firebase 控制台中看到 Dynamic Link 的日志。另一个功能是找出用户点击链接的位置。 (您分享链接的地方)

要查看其用法示例,请参阅thisthis

App Indexing:

App Indexing 有点不同。它的重点是谷歌搜索结果。使用App Indexing,Google 会为您的应用程序和网站的内容编制索引。如果现有的URLs 应用内和网站相同,Google 会验证您拥有这两者。然后在 Google 的搜索结果中,在他们的设备上安装了您的应用程序的用户在点击链接时会直接访问您应用程序中的内容。此外,谷歌还可以将应用程序中的个人内容编入索引。所以当用户在谷歌搜索关键词时,相关的应用内内容就会显示在搜索结果中。

要查看其用法示例,请参阅this

【讨论】:

Android 应用链接呢?您还为导航架构组件中的深层链接提供什么? 感谢您添加这些信息。但这如何与导航架构组件一起使用? 如果您使用的是导航架构组件,通过外部链接打开应用的最佳选择是使用 Firebase 动态链接。当您在主活动中定义的侦听器中收到PendingDynamicLinkData 时,您可以决定使用导航控制器显示您想要的页面。 此外,如果用户不希望应用程序成为默认处理程序,他们可以从设备的系统设置中覆盖此行为。 --- 这是什么意思?所以任何人都可以将呼叫劫持到我的应用程序中??

以上是关于深度链接、Android 应用链接、Firebase 动态链接和应用索引之间的区别 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

延迟深度链接到 android 上的外部应用程序

Android 深度链接。从历史记录打开应用程序时,意图不会重置

深度链接 Facebook android / ios 问题

深度链接和多个应用实例

Android 深度链接 - 回栈

来自深度链接意图时如何仅打开 1 个 android 应用程序实例?