android-app链接无效

时间:2016-08-31 03:52:08

标签: android deep-linking

我在Google I / O 2015上关注此示例。
演示网站:http://recipe-app.com/recipe/grilled-potato-salad 演示应用:http://search-codelabs.appspot.com/codelabs/android-deep-linking

我的测试:
我从上面的链接安装了演示应用程序。 我使用谷歌搜索应用程序进行谷歌搜索“烤土豆沙拉”,并找到http://recipe-app.com/recipe/grilled-potato-salad 我希望点击链接会直接打开应用程序,而不是消除歧义对话框(http://search-codelabs.appspot.com/img/android-deep-linking/img-5.png)。 但是,消除歧义的对话仍然让我感到惊讶。

网站上的<link rel="alternate" href="android-app://com.recipe_app/http/recipe-app.com/recipe/grilled-potato-salad" />不是没用吗?

应用程序的清单文件:
```

<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/CustomActionBarTheme" >

    <activity
        android:name=".client.HomeActivity"
        android:label="@string/app_name"
        android:exported="true"
        android:theme="@android:style/Theme.Holo.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".client.RecipeActivity"
        android:label="@string/app_name"
        android:exported="true"
        android:launchMode="singleTop"
        android:theme="@android:style/Theme.Holo.NoActionBar">
        <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" />
            <!-- Accepts URIs that begin with "http://recipe-app.com/recipe" -->
            <data android:scheme="http"
                android:host="recipe-app.com"
                android:pathPrefix="/recipe" />
        </intent-filter>
    </activity>

    <provider
        android:name=".client.content_provider.RecipeContentProvider"
        android:authorities="com.recipe_app" >
    </provider>
</application>

```

2 个答案:

答案 0 :(得分:0)

尝试使用

<intent-filter tools:node="merge" android:autoVerify="true">
在intent-filter标签中

自动验证告诉Android检查网站和应用是否具有相同的共同所有者必须进行应用链接(否则,它只是深层链接,这就是为什么你看消歧对话)。

<intent-filter android:label="@string/app_name" android:autoVerify="true" >
<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://recipe-app.com/recipe" -->

<data android:scheme="http"
  android:host="recipe-app.com"
  android:pathPrefix="/recipe" />
</intent-filter>

现在,请尝试在设备的“默认浏览器”中首先打开链接,默认浏览器通常是Google搜索。有时,由于各种原因,应用链接可能无法在Chrome或其他应用中使用。

您已经熟悉深层链接,您也可以参考此链接https://developer.android.com/training/app-links/了解如何让您的网站网址在用户手机上重定向到您的应用(如果已安装。如果没有,请参阅'即时应用 - Android')。

答案 1 :(得分:0)

该教程确实过时了。
HTML标记确实没有用。

要使Google搜索结果具有深层链接,需要执行的操作是按照here的指示在您的生产网络服务器上公开发布https://<yoursite>/.well-known/assetlinks.json文件:
在为您的应用设置URL支持之后,App Links Assistant将生成一个数字资产链接文件,您可以使用该文件将您的网站与您的应用相关联。

除了使用Digital Asset Links文件之外,您还可以在Search Console中关联您的网站和应用。

要使用App Links Assistant关联您的应用程序和网站,请从App Links Assistant中单击“打开数字资产链接文件生成器”,然后执行以下步骤:

  

App Links Assistant将引导您完成基本的URL映射图2。   输入有关您的网站和应用的详细信息以生成数字资产   链接文件。

     

1)输入您的站点域和您的应用程序ID。 2)将支持包括在内   您的“数字资产链接”文件中的“密码智能锁定”,选择   支持在应用程序和网站之间共享凭据,然后输入   您网站的登录URL。这会将以下字符串添加到您的Digital   资产链接文件声明您的应用和网站共享登录   凭据:proxy_permission / common.get_login_creds。学到更多   有关在应用程序中支持Smart Lock for Passwords的信息。 3)指定   签署配置或选择密钥库文件。确保选择   用于发布版本或调试的正确配置或密钥库文件   您的应用程序的构建。如果要设置生产版本,请使用   发布配置。如果要测试构建,请使用调试   配置。 4)单击生成数字资产链接文件。 5)一次Android Studio   生成文件,单击“保存文件”以下载它。 6)上传   assetlinks.json文件到您的站点,每个人都可以访问   https:///.well-known/assetlinks.json。重要提示:系统   通过加密的HTTPS验证数字资产链接文件   协议。确保可以通过以下位置访问assetlinks.json文件   HTTPS连接,无论您的应用程序的意图过滤器是什么   包括https。

     

7)单击“链接并验证”以确认您已正确上传   将数字资产链接文件保存到

正确的位置。

您现在应该可以在Google搜索结果中看到“您的应用程序-已安装”,这就是您知道它已经起作用的原因
enter image description here