Что такое глубокие ссылки?
Глубокие ссылки Android открывают определенную страницу в приложении и при желании передают в нее данные. Разработчики могут найти глубокие ссылки, особенно полезные для таких действий, как щелчок уведомления или отправка ссылки на приложение по электронной почте.
Давайте возьмем почтовый клиент в качестве примера. Когда пользователь нажимает на уведомление о полученном им электронном письме, он открывает глубокую ссылку, которая приводит его к электронному письму в приложении. Наконец, что не менее важно, глубокие ссылки также позволяют Google индексировать ваше приложение и ссылаться на определенные разделы вашего приложения в поиске. Глубокая ссылка отображается как результат поиска в Google и может привести пользователя к определенному разделу вашего приложения.
Реализация глубоких ссылок
Чтобы добавить глубокую ссылку на ваше приложение, вы должны добавить ее в файл манифеста Android в качестве фильтра намерений. Посмотрите на следующий пример.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<application android:allowBackup=»true» android:icon=»@mipmap/ic_launcher» android:label=»@string/app_name»
android:supportsRtl=»true» android:theme=»@style/AppTheme»>
<activity android:name=».MainActivity» android:label=»@string/app_name» android:theme=»@style/AppTheme.NoActionBar»>
<intent-filter>
<!— Notice that the MAIN activity already has an intent-filter.
A deep link because its action is not a VIEW—>
<action android:name=»android.intent.action.MAIN» />
<category android:name=»android.intent.category.LAUNCHER» />
</intent-filter>
</activity>
<activity android:name=»com.example.matthew.deeplinks.LinkActivity» android:label=»@string/title_activity_link»
android:theme=»@style/AppTheme.NoActionBar»>
<intent-filter>
<!— Sets the intent action to view the activity —>
<action android:name=»android.intent.action.VIEW» />
<!— Allows the link to be opened from a web browser —>
<category android:name=»android.intent.category.BROWSABLE» />
<!— Allows the deep link to be used without specifying the app name —>
<category android:name=»android.intent.category.DEFAULT» />
<!— URI tutsplus://deeplink —>
<data android:scheme=»tutsplus» android:host=»deeplink»/>
<!— URI http://www.mydeeplink.com —>
<data android:scheme=»http» android:host=»www.mydeeplink.com»/>
</intent-filter>
</activity>
</application>
|
Теги <action>
и <data>
являются обязательными. Тег <action>
выбирает, что происходит в приложении при нажатии на ссылку. Тег <data>
указывает, какие URI допустимы в качестве глубоких ссылок на страницу.
В приведенном выше примере переход по адресу http://www.mydeeplink.com или tutsplus: // deeplink переводит пользователя в действие LinkActivity
. Теги <category>
определяют свойства глубокой ссылки. Обратите внимание, что вам нужно создать отдельный фильтр намерений для каждой схемы URI и каждого действия.
Вы можете создать несколько ссылок на один и тот же вид деятельности. Чтобы дифференцировать их, вам нужно проанализировать данные намерения в вашем коде, чтобы дифференцировать ссылки. Обычно это делается в onCreate()
, читая данные и действуя соответствующим образом.
01
02
03
04
05
06
07
08
09
10
|
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_link);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Intent in = getIntent();
Uri data = in.getData();
// Do something with data.
}
|
Тестирование Deep Links
Android Studio позволяет легко тестировать глубокие ссылки. Нажмите Run> Edit Configurations, чтобы редактировать конфигурацию проекта.
Откройте вкладку General в верхней части и введите URI в поле Deep Link в разделе Launch Options . При запуске приложения с помощью Android Studio оно попытается открыть указанный URI.
Вывод
Теперь, когда вы знаете, как создавать и использовать глубокие ссылки, вы можете открыть новые точки входа для пользователей для взаимодействия с вашим приложением. Пользователи могут использовать поиск Google на своих телефонах для поиска страниц в вашем приложении, а вы можете создавать уведомления, которые открывают определенную страницу в вашем приложении при нажатии.