summaryrefslogtreecommitdiffstats
path: root/docs/html-intl/intl/ru/preview/features/app-linking.jd
blob: f991717b1ea6e093efbe530008dfa9cb1b6264ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
page.title=Связи приложений
page.image=images/cards/card-app-linking_2x.png
page.keywords=связывание приложений, прямые ссылки, намерения
@jd:body

<div id="qv-wrapper">
  <div id="qv">
    <h2>Содержание документа</h2>
      <ol>
        <li><a href="#web-assoc">Объявление связи с веб-сайтом</a></li>
        <li><a href="#verfy-links">Запрос проверки связи приложений</a></li>
        <li><a href="#user-manage">Настройки связи приложений</a></li>
      </ol>
  </div>
</div>

<p>
  Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы.
  Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку
, у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных
 приложений, объявивших соответствующие фильтры намерений.
</p>

<p>
  В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок,
 предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи
платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной
веб-ссылки.
</p>


<h2 id="web-assoc">Объявление связи с веб-сайтом</h2>

<p>
  Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец 
размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно.

</p>

<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>

<p class="note">
  <strong>Примечание.</strong>
  В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном
выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS.
</p>

<p>
  В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL
в этом домене. Для определения приложения используются следующие поля:
</p>

<ul>
  <li>{@code package_name}: имя пакета, объявленное в манифесте приложения;</li>

  <li>{@code sha256_cert_fingerprints}: контрольная сумма SHA256 сертификата, который использовался для подписи вашего приложения.
    Чтобы сгенерировать контрольную сумму, можно выполнить следующую команду в программе Java keytool:
    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
  </li>
</ul>

<p>
  Ниже представлен пример содержимого и формата файла
{@code statements.json}.
</p>

<pre>
[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "<strong>&lt;package name&gt;</strong>",
    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
  }
}]
</pre>


<h2 id="verfy-links">Запрос проверки связи приложений</h2>

<p>
  Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных
его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в
соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify},
как показано в следующем фрагменте кода
манифеста:
</p>

<pre>
&lt;activity ...&gt;
    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
        &lt;action android:name="android.intent.action.VIEW" /&gt;
        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
    &lt;/intent-filter&gt;
&lt;/activity&gt;
</pre>

<p>
  Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается
проверить связи приложений при установке приложения. Если платформе не
удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь
нажмет на одну из ссылок, платформа снова отобразит для него
соответствующее диалоговое окно.
</p>

<p class="note">
  <strong>Примечание.</strong> При тестировании существует вероятность ложных срабатываний, когда проверка завершается
сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок
. В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение,
однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно.
</p>


<h2 id="user-manage">Настройки связи приложений</h2>

<p>
  Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими
можно воспользоваться системным приложением «Настройки» (в разделе <strong>Настройки &gt; Приложения &gt; Информация о приложении &gt;
Открывать по умолчанию</strong>.
</p>