Диплинки позволяют открывать приложение по ссылке - перешел по 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 доступны по правильным адресам.Подписаться на канал:
➡️ Flutter & Dart | Мобильный трудоголик
Закрытый канал:
🚀 Мобильный трудоголик PRO