Реалізація Universal Links для iOS-додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

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

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

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

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

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

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація Universal Links для iOS-додатку

Universal Links — механізм, при якому посилання вида https://example.com/product/123 відкриває додаток напрямку на потрібному екрані, мінуючи браузер. Якщо додаток не встановлено — відкривається сайт. Ніяких кастомних схем (myapp://product/123), які не працюють у Safari та блокуються корпоративними MDM.

Як це працює та де ломається

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": "Сторінки товарів" },
        { "/": "/order/*" }
      ]
    }]
  }
}

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

Обробка в коді. В 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).

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

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

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

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

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

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

Строки

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