添加 Android 应用链接

Android 应用链接是指将用户直接转到 Android 应用内特定内容的 HTTP 网址。Android 应用链接可为您的应用带来更多流量,帮助您发现最常用的应用内容,并让用户更轻松地在已安装的应用中分享和查找内容。

要添加对 Android 应用链接的支持,请执行以下操作:

  1. 在清单中创建 Intent 过滤器。
  2. 将代码添加到应用的 Activity 中以处理传入链接。
  3. 使用 Digital Asset Links 将应用与网站相关联。

Android Studio 2.3 及更高版本中的 App Links Assistant 以分步向导的方式简化了该流程,如下所述。

如需详细了解应用链接的运作方式及其提供的优势,请参阅处理 Android 应用链接

添加 Intent 过滤器

Android Studio 中的 App Links Assistant 可帮助您在清单中创建 Intent 过滤器,并将您网站中的现有网址映射到应用中的 Activity。App Links Assistant 还会在每个对应 Activity 中添加处理 Intent 的模板 Java 代码。

要添加 Intent 过滤器和网址处理功能,请按以下步骤操作:

  1. 依次选择 Tools > App Links Assistant
  2. 点击 Open URL Mapping Editor,然后点击 URL Mapping 列表底部的 Add 以添加新的网址映射。
  3. 添加新网址映射的详细信息:
    App Links Assistant 将引导您逐步完成基本的网址映射流程

    图 1. 添加有关您网站的链接结构的基本详情,以将网址映射到应用中的 Activity。

    1. Host 字段中输入网站的网址。
    2. 为您要映射的网址添加 pathpathPrefixpathPattern。例如,如果您有一个食谱分享应用,所有食谱都在同一个 Activity 中,并且对应网站的食谱都在同一个 /recipe 目录中,请使用 pathPrefix 并输入 /recipe。 这样,网址 http://www.recipe-app.com/recipe/grilled-potato-salad 就会映射到您在下一步中选择的 Activity。
    3. 选择网址应将用户转至的 Activity
    4. 点击 OK
  4. App Links Assistant 会根据您映射到 AndroidManifest.xml 文件的网址添加 Intent 过滤器,并在 Preview 字段中突出显示此过滤器。如果您要进行任何更改,请点击 Open AndroidManifest.xml 以修改 Intent 过滤器。(详细了解 Android 中的 Intent 过滤器。)

    注意:要在不更新应用的情况下支持更多链接,您应定义一个支持未来新增网址的网址映射。此外,请记得为您的应用主屏幕添加一个网址,使其包含在搜索结果中。

  5. 要验证网址映射是否正常运行,请在 Check URL Mapping 字段中输入网址,然后点击 Check Mapping。如果网址映射正常运行,则成功消息会显示您输入的网址映射到您选择的 Activity。

处理传入链接

确认网址映射正常运行后,请添加逻辑以处理您创建的 Intent。

  1. 点击 App Links Assistant 中的 Select Activity
  2. 从列表中选择一个 Activity,然后点击 Insert Code

App Links Assistant 会将代码添加到 Activity 的 Java 文件中,类似于以下代码段(请注意:目前 App Links Assistant 不支持 Kotlin,因此您需要手动添加以下代码):

Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val appLinkIntent = intent
        val appLinkAction = appLinkIntent.action
        val appLinkData = appLinkIntent.data

    }
    

Java

    // ATTENTION: This was auto-generated to handle app links.
    Intent appLinkIntent = getIntent();
    String appLinkAction = appLinkIntent.getAction();
    Uri appLinkData = appLinkIntent.getData();
    

不过,上述代码本身并不完整。您现在必须根据 appLinkData 中的 URI 执行一项操作,例如显示相应内容。例如,对于食谱分享应用,您的代码可能如以下示例所示:

Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ...
        handleIntent(intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleIntent(intent)
    }

    private fun handleIntent(intent: Intent) {
        val appLinkAction = intent.action
        val appLinkData: Uri? = intent.data
        if (Intent.ACTION_VIEW == appLinkAction) {
            appLinkData?.lastPathSegment?.also { recipeId ->
                Uri.parse("content://com.recipe_app/recipe/")
                        .buildUpon()
                        .appendPath(recipeId)
                        .build().also { appData ->
                            showRecipe(appData)
                        }
            }
        }
    }
    

Java

    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      ...
      handleIntent(getIntent());
    }

    protected void onNewIntent(Intent intent) {
      super.onNewIntent(intent);
      handleIntent(intent);
    }

    private void handleIntent(Intent intent) {
        String appLinkAction = intent.getAction();
        Uri appLinkData = intent.getData();
        if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null){
            String recipeId = appLinkData.getLastPathSegment();
            Uri appData = Uri.parse("content://com.recipe_app/recipe/").buildUpon()
                .appendPath(recipeId).build();
            showRecipe(appData);
        }
    }
    

将应用与网站相关联

在为您的应用设置网址支持后,App Links Assistant 会生成一个 Digital Asset Links 文件,您可以使用该文件将网站与应用相关联。

除了使用 Digital Asset Links 文件,您还可以在 Search Console 中将您的网站与应用相关联

要使用 App Links Assistant 将您的应用与网站相关联,请点击 App Links Assistant 中的 Open Digital Asset Links File Generator,然后按照以下步骤操作:

App Links Assistant 将引导您逐步完成基本的网址映射流程

图 2. 输入有关您的网站和应用的详细信息,以生成 Digital Asset Links 文件。

  1. 输入您的 Site domainApplication ID
  2. 要在 Digital Asset Links 文件中添加 Smart Lock(密码专用)支持,请选择 Support sharing credentials between the app and the website,然后输入网站的登录网址。此操作会将以下字符串添加到声明应用和网站共享登录凭据的 Digital Asset Links 文件中:delegate_permission/common.get_login_creds。详细了解如何在应用中支持 Smart Lock(密码专用)
  3. 指定签名配置或选择密钥库文件。请确保为应用的发布版或调试版选择正确的配置或密钥库文件。如果要设置正式版,请使用版本配置。如果要测试版本,请使用调试配置。
  4. 点击 Generate Digital Asset Links file
  5. Android Studio 生成文件后,点击 Save file 进行下载。
  6. assetlinks.json 文件上传到您的网站并允许所有人读取,网址为 https://<yoursite>/.well-known/assetlinks.json

    重要提示:系统会通过加密的 HTTPS 协议验证 Digital Asset Links 文件。请确保无论应用的 Intent 过滤器是否包括 https,均可通过 HTTPS 连接访问 assetlinks.json 文件。

  7. 点击 Link and Verify 以确认您已将正确的 Digital Asset Links 文件上传到适当的位置。

如需详细了解如何通过 Digital Asset Links 文件将网站与应用相关联,请访问声明网站关联

测试应用链接

要验证您的链接是否会打开正确的 Activity,请按以下步骤操作:

  1. 点击 App Links Assistant 中的 Test App Links
  2. URL 字段中输入要测试的网址,例如 http://recipe-app.com/recipe/grilled-potato-salad。
  3. 图 3. 当您测试的网址成功映射到应用中的 Activity 时,App Links Assistant 会显示一条成功消息并打开应用以显示指定内容。

  4. 点击 Run Test
  5. 如果网址映射未正确设置或不存在,则 Test App Links 窗口中的网址下会显示一条错误消息。如果网址映射存在,Android Studio 会在设备或模拟器的指定 Activity 中启动您的应用,而不显示消除歧义对话框(应用“选择器”),并在 App Link Testing 窗口中显示一条成功消息。如果 Android Studio 无法成功启动应用,则 Android Studio 的 Run 窗口中会显示一条错误消息。

要通过 App Links Assistant 测试 Android 应用链接,您必须已连接设备或有一个运行 Android 6.0(API 级别 23)或更高版本的虚拟设备。如需了解更多信息,请参阅如何连接设备创建 AVD

添加 Firebase App Indexing

将 Android 应用链接添加到您的应用后,您可以将 Firebase App Indexing 代码添加到 Activity 中,以便用户通过其他 Google 搜索功能(包括自动填充建议和应用内搜索)再次访问您的应用。如需详细了解 Firebase App Indexing,请参阅 Firebase App Indexing 文档

要将 Firebase App Indexing 添加到您的应用中,请使用 Android Studio 中的 Firebase Assistant,并展开 App Indexing 部分以查看分步说明。