
Привет! Меня зовут Анна Ахлестова, я Flutter Team Lead в компании Friflex. Мобильные приложения, в том числе на Flutter, позволяют настраивать обработку различных ссылок. В этой статье я разберу, как во Flutter реализовать поддержку deeplink-ов и универсальных ссылок и как управлять ими на уровне платформы.
Сначала разберемся, с какими типами ссылок можно работать в мобильных приложениях.
Глубокие ссылки (deeplinks) — это ссылки с кастомной схемой, которые позволяют открыть именно ваше приложение на устройстве и перейти на вложенные маршруты внутри него. Например, ссылка app://product/id123 откроет ваше приложение сразу на странице продукта с идентификатором id123.
Universal links — это универсальные ссылки iOS приложений в формате стандартной веб-ссылки, например, https://www.example.com. Если приложение установлено, ссылки открывают его. Если нет, в браузере открывается веб-сайт, который связан с этой ссылкой.
App Links — это ссылки для Android, которые работают так же, как Universial links на iOS.
App_links библиотека
После настройки ссылок на проектах часто возникает вопрос: как выполнить их обработку внутри приложения? Здесь поможет библиотека app_links. Чтобы получить ссылки, нужно использовать экземпляр класса AppLinks:
final _instance = AppLinks();С помощью этого объекта можно отследить, с какой конкретной ссылки запустили приложение.
Future<void> handleInitialLink() async {
final initialLink = await _instance.getInitialLink();
// обработка начальной ссылки
}Когда приложение работает, в него из платформы тоже могут поступать ссылки. Тогда плагин дает возможность получать эти ссылки потоком строк или объектов Uri.
final uriSubscription = _instance.uriLinkStream.listen((uri) {
// обработка ссылки в Uri формате
});
final stringLinksSubscription = _instance.stringLinkStream.listen((stringLink) {
// обработка ссылки в String формате
});У библиотеки хорошая репутация: почти тысяча лайков и более 800 тысяч скачиваний.
Динамические ссылки
Теперь поговорим, как интегрировать универсальные или динамические ссылки во Flutter-приложение.
Раньше для этого часто использовали Firebase Dynamic Links, это был удобный кроссплатформенный способ управлять https-ссылками. Но 25 августа 2025 года эту функциональность полностью отключили. Для новых проектов ее использовать уже нельзя.
На замену приходят Universal links для iOS и App Links для Android.
Настроить ссылки на Android очень просто. Для этого Android Studio дает инструмент App Links Assistant (Tools -> App Links Assistant). В нем есть пошаговая инструкция и подсказки, какие действия нужно выполнить. В нужных местах он сам генерирует код.
Вот как это выглядит:
В AndroidManifest.xml нужно добавить поддержку схем и хоста, которые будет содержать ссылка.
В MainActivity нужно добавить логику нативной обработки ссылок, которые поступают извне.
Нужно сформировать файл связанных доменов для связи с конкретным сайтом.
В итоге вы должны получить сгенерированный файл assetlinks.json.
На iOS такого инструмента нет, но настройка тоже не сложная.
В файле Info.plist нужно добавить флаг FlutterDeepLinkingEnabled со значением true. Важно: если вы используете сторонние библиотеки для обработки ссылок (например, app_links), значение флага нужно установить false.
<key>FlutterDeepLinkingEnabled</key>
<true />В Xcode нужно перейти в Runner, в разделе Signing and Capabilities добавить новую Capability и в списке выбрать Associated Domains. Здесь нужно указать, с каким именно доменом должно быть связано приложение. Добавляем строку:
applinks:www.example.ruНужно создать файл apple-app-site-association. Название файла не должно содержать расширения. В самом файле в формате json нужно добавить поле «applinks» и «details» для описания того, какое именно приложение связывается с сайтом и какие пути обрабатывает. Полный формат файла можно найти здесь.
Важно правильно составить appIDs. Строка идентификатора должна быть из двух частей:
<Application Identifier Prefix>.<Bundle Identifier>Эти данные можно достать из карточки приложения в App Store Connect.
Последний шаг общий для обеих платформ: файлы apple-app-site-association и assetlinks.json нужно загрузить на сайт, поддержку хоста которого вы добавили в приложении. После загрузки файлы должны быть доступны по путям:
https://www.example.ru/.well-known/apple-app-site-association
https://www.example.ru/.well-known/assetlinks.json
После загрузки в том же App Links Assistant нужно подтвердить загрузку, чтобы проверить подключение. Для iOS нужно подождать 24 часа, чтобы Apple получил доступ к файлу.
Вуаля, теперь ваше приложение будет открываться по ссылке https://www.example.ru
А вот инструкции для Flutter, Android и iOS.
Сталкивались ли вы со сложностями, когда настраивали deeplink-и во Flutter?
