Налаштування Universal Links для iOS-додатку

Додаток не відкривається за посиланням з листа? Користувачі скаржаться, що сайт відкривається в браузері, а не в додатку? [Universal Links](https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app) вирішують цю проблему безпосередньо: посилання виду `https://example.com

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Налаштування Universal Links для iOS-додатку
Середній
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Додаток не відкривається за посиланням з листа? Користувачі скаржаться, що сайт відкривається в браузері, а не в додатку? Universal Links вирішують цю проблему безпосередньо: посилання виду https://example.com/product/123 відкриває додаток на потрібному екрані, минаючи браузер. Жодних кастомних схем (myapp://product/123), які не працюють в Safari та блокуються корпоративними MDM. Ми, команда мобільних розробників з досвідом понад 5 років, налаштували Universal Links для 15+ iOS-проектів із загальною аудиторією понад 2 млн користувачів. На одному з проектів з аудиторією 500 тисяч користувачів ми виявили, що користувачі не могли перейти з email-розсилки в конкретний товар — конверсія впала на 20%. Після впровадження Universal Links вона відновилася і зросла на 15%. У цій статті — перевірена методика та типові граблі.

Чому Universal Links кращі за кастомні схеми?

Кастомні URL-схеми (myapp://) мають фундаментальні недоліки:

  • Не працюють в Safari за замовчуванням — користувач бачить помилку «Не вдалося відкрити додаток».
  • Не підтримуються в корпоративних MDM-середовищах.
  • Не мають fallback на веб-версію.

Universal Links позбавлені цих проблем: вони використовують стандартний HTTPS, підтримують fallback на сайт і не вимагають додаткових дій від користувача. Безпека вища — схема не може бути перехоплена іншим додатком.

Критерій Universal Links Custom URL Scheme
Робота в Safari Так Ні (помилка)
Fallback на сайт Автоматично Потрібен JS
MDM-сумісність Так Ні
Безпека Висока (https) Низька

Як працюють Universal Links і де вони ламаються?

AASA-файл. На сервері за адресою https://example.com/.well-known/apple-app-site-association має лежати JSON без розширення файлу, з заголовком Content-Type: application/json, доступний по HTTPS без редиректів. Apple парсить цей файл при встановленні додатку та кешує на CDN — оновлення може зайняти до 24 годин.

Найпоширеніша помилка: сервер віддає файл з редиректом з http на https, або з 301 на www-версію домену. Apple не слідує редиректам при завантаженні AASA. Перевіряємо через curl -v https://example.com/.well-known/apple-app-site-association — має повернути 200 з правильним Content-Type.

Формат для iOS 13+ (applinks з details):

{ "applinks": { "details": [{ "appIDs": ["TEAMID.com.example.app"], "components": [ { "/": "/product/*", "comment": "Product pages" }, { "/": "/order/*" } ] }] } } 

App Entitlements. У Entitlements.plist потрібен com.apple.developer.associated-domains із записом applinks:example.com. Забутий entitlement — додаток просто не отримує universal link колбек.

Обробка в коді. У AppDelegate або SceneDelegate реалізуємо application(_:continue:restorationHandler:) (UIKit) або onOpenURL (SwiftUI). Отримуємо NSUserActivity з типом NSUserActivityTypeBrowsingWeb та webpageURL. Парсимо шлях, визначаємо потрібний екран, будуємо навігаційний стек.

Розбір URL має бути стійким: webpageURL може прийти з query-параметрами, фрагментами, у верхньому регістрі. Використовуємо URLComponents замість ручного розбору рядків.

Тестування. У симуляторі universal links працюють через xcrun simctl openurl booted 'https://example.com/product/123'. На реальному пристрої — через Safari (довге натискання на посилання → «Відкрити в додатку»). Xcode → Diagnostics не покаже проблему з AASA — потрібен swcutil на Mac та Console.app для логів swcd (Apple's universal links daemon).

Режим розробника (developer mode)

Для enterprise-додатків або staging-оточень додаємо applinks:example.com?mode=developer в entitlements. У цьому режимі iOS не кешує AASA і запитує файл безпосередньо з сервера — зручно при розробці.

Як перевірити, що AASA-файл коректний?

Для перевірки виконайте наступні кроки:

  1. Виконайте curl -v https://example.com/.well-known/apple-app-site-association. Очікуйте HTTP/1.1 200 OK та Content-Type: application/json.
  2. Використовуйте AASA Validator від Apple (вбудований в Apple Developer). Apple Developer Documentation рекомендує цей інструмент.
  3. На Mac відкрийте Console.app, відфільтруйте по swcd — побачите логи завантаження AASA.
  4. На iOS: у Safari введіть посилання, після відкриття додатку перевірте логи через пристрій.

Типові проблеми при налаштуванні

Часто розробники стикаються з тим, що посилання відкриває сайт замість додатку. Причина — AASA-файл недоступний або невірний: сервер віддає редирект або неправильний формат. Рішення — видалити редиректи та перевірити відповідність формату iOS 13+. Інша проблема — universal link не обробляється через відсутність entitlement com.apple.developer.associated-domains у цільовому таргеті. Третя — AASA-файл не оновлюється через кешування Apple (до 24 годин). Для прискорення використовуйте developer mode.

Сценарії та edge-cases

Кілька доменів. Додаток може обробляти до 5 доменів — просто додаємо кілька записів в entitlements. AASA потрібен на кожному домені окремо.

Посилання з email-клієнтів. Gmail та Outlook в додатках на iOS обгортають посилання через свій redirect-сервіс. Universal link у цьому випадку не спрацьовує — Apple бачить redirect URL, а не цільовий. Це обмеження платформи, не баг у реалізації.

Що входить у роботу

  • Налаштування AASA-файлу на сервері з потрібними патернами шляхів
  • Entitlements та конфігурація в Xcode для всіх таргетів і схем (Debug, Release, Staging)
  • Реалізація обробника в SceneDelegate / AppDelegate з роутингом на потрібні екрани
  • Тестування на реальних пристроях та через симулятор
  • Перевірка через Apple's validator та логи swcd
  • Гарантія коректної роботи на iOS 14+ (перевірено на 15+ проектах)

Зв'яжіться з нами для обговорення вашого проекту. Замовте налаштування під ключ та отримайте консультацію інженера з досвідом понад 5 років.

Строки

Реалізація з кількома патернами шляхів та інтеграцією в існуючу навігацію: від 1 до 2 днів. З підтримкою кількох доменів та кастомною логікою роутингу — від 2 до 3 днів. Вартість розраховується індивідуально.

Отримайте консультацію інженера — ми допоможемо розібратися з вашим проектом.