Включение глубоких ссылок для содержимого приложения

Чтобы включить сканирование Google для контента вашего приложения, и позволить пользователям входить в ваше приложение из результатов поиска, необходимо добавить фильтры намерений для соответствующих видов деятельности в манифест вашего приложения. Эти фильтры намерений предоставляют глубокие ссылки на контент в любой вашей деятельности. Например, пользователь может нажать на глубокую ссылку для просмотра страницы в торговом приложении, которое описывает ассортимент продукции, которую ищет пользователь.

Добавить фильтры намерений для ваших глубоких ссылок

Чтобы создать глубокую ссылку на содержание своего приложения, добавьте фильтр намерений, который содержит эти элементы и значения атрибутов в манифесте:

<action>
Укажите ACTION_VIEW в качестве действия намерения, чтобы фильтр намерения стал доступным из Поиска Google.
<data>
Добавьте один или несколько <data> тегов, где каждый тег представляет собой ссылку (URI), которая указывает на деятельность. Как минимум, <data> тег должен включать android:scheme атрибут.

Вы можете добавить дополнительные атрибуты для улучшения ссылки (URI), которую ваша деятельность принимает. Например, у вас может быть несколько деятельностей, которые принимают похожие ссылки, но которые просто отличаются на основе пути. В этом случае, используйте android:path атрибут или его варианты(pathPattern или pathPrefix) для определения деятельности, которую система должна открывать для разных ссылок.

<category>
Включите BROWSABLE категорию. BROWSABLE категория требуется для того, чтобы фильтр намерений был доступным из веб-браузера. Без этого, нажав на ссылку в браузере, он не сможет определить ваше приложение. DEFAULT категория не является обязательной, но рекомендована. Без этой категории, деятельность может быть запущена только с явным намерением, используя имя компонента вашего приложения.

В следующем XML-фрагмент показывается, как можно указать фильтр намерения в манифесте для глубоких ссылок. Ссылки “example://gizmos” и “http://www.example.com/gizmos” обе указывают на эту деятельность.

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_title_viewgizmos">
        <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" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="gizmos" />
    </intent-filter>
</activity>

После того, как вы добавили фильтры намерений со ссылками на содержания деятельности в манифест вашего приложения, Android способен перенаправить любой Intent который соответствует ссылкам в ваше приложение во время выполнения.

Чтобы узнать больше об определении фильтров намерений, см. Разрешить другим приложениям запускать вашу деятельность.

Чтение данных из входящих намерений

После того, как система начинает вашу деятельность через фильтр намерений, вы можете использовать данные, предоставленные Intent для определения того, что вам нужно сделать. Вызовите getData() и getAction() методы для получения данных и действия, связанных с входящим Intent. Вы можете вызывать эти методы в любое время в течение всего жизненного цикла активности, но как правило, следует сделать это во время ранних обратных вызовов, таких как onCreate() или onStart().

Вот фрагмент, который показывает, как извлечь данные из Intent:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

Следуйте этим рекомендациям, чтобы улучшить работу пользователей:

  • Глубокие ссылки должны приводить пользователей сразу к содержанию, без каких-либо приглашений, промежуточных страниц, или входа в систему. Убедитесь в том, что пользователи могут видеть содержание приложения, даже если они никогда ранее не открывали приложение. Это нормально, если показываете дополнительные экраны пользователям при последующих взаимодействий или когда они открывают приложение со страницы запуска. Это такой же принцип как первое нажатие бесплатно , используемый для веб-сайтов.
  • Следуйте указаниям дизайна, описанных в Навигация с помощью Назад и Вверх , чтобы ваше приложение соответствовало ожиданиям пользователей для обратной навигации после того как оно вошли в ваше приложение по глубокой ссылке.

Проверка своих глубокий ссылок

Вы можете использовать Android Debug Bridge с сервисной программой менеджер активности (am) для тестирования того, что ссылки фильтра намерений, заданные для глубоких ссылок, указывают на правильную деятельность приложения. Вы можете запустить команду adb для устройства или эмулятора.

Общий синтаксис для тестирования ссылок фильтра намерений с помощью adb:

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

Например, команда ниже пытается просмотреть целевую деятельность приложения, связанную с указанной ссылкой (URI).

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android