Deeplinks во Flutter: настройка для Android и iOS



Диплинки позволяют открывать приложение по ссылке - перешел по URL и сразу попал на нужный экран. Смена пароля по ссылке из письма, открытие конкретного видео или поста, переход на карточку товара по ссылке - все это работает через deeplinks. Во Flutter нет единого решения, потому что механизм завязан на платформу. Придется настраивать Android и iOS отдельно, но это не так страшно, как кажется.

Для обработки ссылок внутри Flutter удобнее всего использовать пакет app_links. Он официально поддерживается, работает на всех платформах.


Добавляем пакет в проект:

Для добавления пакета в проект можно выполнить команду в терминале:

flutter pub add app_links

Либо добавить следующую строку в блок dependencies в файле pubspec yaml:

app_links: ^7.1.1

Настройка для Android:

В файле android/app/src/main/AndroidManifest.xml внутри <activity> нужно добавить intent-filter. Это правило, которое говорит системе что нужно обрабатывать ссылки такого вида.

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="your-domain.com" />
</intent-filter>

Если используете кастомную схему (не http/https), укажите ее вместо https.


App Links (https):

Для автоматического открытия ссылок в приложении нужно:

🔹 Указать android:autoVerify="true" в intent-filter.

🔹 Разместить файл assetlinks.json на сервере в папке .well-known (домен должен совпадать с указанным в intent-filter).

Пример файла assetlinks json:

[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.example.yourapp",
"sha256_cert_fingerprints": [
"ваш SHA256 отпечаток"
]
}
}
]

SHA256 можно получить из Google Play Console или сгенерировать через keytool.


Настройка для iOS:


Custom scheme:

Добавьте схему в Xcode: откройте Info plist как исходный код и добавьте:

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>

Universal Links (https):

 Нужно:

🔹 Включить Associated Domains в Capabilities проекта Xcode.

🔹 Добавить applinks:your-domain.com.

🔹 Разместить файл apple-app-site-association на сервере в папке .well-known.

Пример файла apple-app-site-association:

{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAMID.com.example.yourapp",
"paths": ["*"]
}
]
}
}

TEAMID можно найти в Apple Developer Account.


🔗 Читать подробнее


Вывод:

Диплинки во Flutter настраиваются в несколько этапов: правим манифест на Android, добавляем entitlements на iOS, кладем файлы на сервер, а в коде используем app_links для получения ссылок и Navigator для переходов. app_links берет на себя всю сложность получения deeplink на обеих платформах. Вам остается только подписаться на поток и написать логику переходов.

После правильной настройки приложение будет корректно открываться по ссылкам из писем, мессенджеров или браузера. Главное не забыть протестировать все сценарии и убедиться, что файлы assetlinks json и apple-app-site-association доступны по правильным адресам.
Просмотры: 128
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти