Universal Link — bu nədir, iş prinsipi və konfiqurasiya

Müəllif: IT Sectr Dərc olunub: 2026-05-14 Oxuma vaxtı: 9 dəq

Universal Link Apple (iOS 9+) mexanizmidir, veb-linkləri Safari-ni yan keçərək birbaşa tətbiqdə açmağa imkan verir. Tətbiq quraşdırılmayıbsa, link problemsiz brauzerdə açılır. Termin Apple tərəfindən 2015-ci ildə WWDC-də Handoff və Continuity ekosisteminin bir hissəsi kimi təqdim edilmişdir. Apple Developer-ə görə, Universal Link seçim dialoqları olmadan veb və nativ tətbiq arasında vahid istifadəçi təcrübəsi təmin edir.

Əsas məqamlar

  • Universal Link — tətbiqi (iOS 9+) və ya saytı (fallback) açan standart https-link
  • apple-app-site-association — serverdə domenin tətbiqlə əlaqəsini təsdiqləyən JSON faylı
  • Təhlükəsizlik — yalnız domen sahibi linkləri əlaqələndirə bilər, sxem ələ keçirməsinin qarşısını alır
  • Vahid URL — bir link həm veb-səhifə, həm də tətbiqə giriş kimi işləyir
  • Handoff və Spotlight — Universal Link Apple axtarışı və cihazlar arası ötürmə ilə inteqrasiya olunur

Universal Link https://example.com/page formasında standart HTTPS-linkdir, iOS cihazından keçid zamanı Safari əvəzinə quraşdırılmış tətbiqi açır. Custom URL Scheme-dən əsas fərqi: Universal Link fərdi sxemin (myapp://) qeydiyyatını tələb etmir — adi domen istifadə olunur. Bu, istənilən tətbiqin eyni sxemi qeydiyyatdan keçirə biləcəyi URL Scheme hijacking problemini aradan qaldırır.

Apple Universal Link-i WWDC 2015-də iOS 9 çərçivəsində təqdim etdi. Mexanizm Handoff və Spotlight ekosisteminin bir hissəsi oldu: Universal Link yalnız brauzerdə deyil, həm də Spotlight axtarış nəticələrində, Mail, Messages və digər sistem tətbiqlərində işləyir. Bundan əlavə, Universal Link watchOS və macOS-da dəstəklənir — istifadəçi Mac-dakı link vasitəsilə iPhone-da tətbiqi aça bilər.

Əsas üstünlük: vahid URL. Tərtibatçı iki fərqli linki (biri veb üçün, digəri tətbiq üçün) idarə etmir. Universal Link eyni https-linkdir. Tətbiq quraşdırılıbsa — o açılır. Yoxdursa — eyni link Safari-də adi veb-səhifə kimi açılır. Bu, trafik itkisi olmadan ideal fallback təmin edir.

Universal Link mexanizmi üç mərhələdən ibarətdir: assosiasiya yoxlanışı, linkin işlənməsi və brauzerə fallback. Hər mərhələ düzgün işləmə üçün kritikdir. Əgər assosiasiya qurulmayıbsa, iOS linki Safari-yə adi keçid kimi emal edir. Hər mərhələni ətraflı nəzərdən keçirək.

Assosiasiya yoxlanışı (Association Verification)

Linkə ilk klikdə iOS serverdən https://example.com/.well-known/apple-app-site-association ünvanından apple-app-site-association faylını yükləyir. Faylda JSON formatında Team ID və Bundle ID, həmçinin tətbiqin açmalı olduğu yolların siyahısı var. iOS bu faylı keşləyir və vaxtaşırı yeniliyini yoxlayır (tətbiq yeniləndikdə, cihaz yenidən başladıldıqda).

JSON faylı apple-app-site-association HTTPS vasitəsilə yönləndirməsiz əlçatan olmalıdır. Server Content-Type: application/json qaytarmalıdır. Vacib: faylın .json genişlənməsi yoxdur — iOS onu ciddi şəkildə /.well-known/apple-app-site-association yolunda axtarır. Apple həmçinin CDN-də Universal Link dəstəyi əlavə etməyi və faylın robots.txt tərəfindən bloklanmadığını yoxlamağı tövsiyə edir.

json
// apple-app-site-association — minimal konfiqurasiya
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAMID.com.example.app",
                "paths": ["/product/*", "/profile/*", "/search"]
            }
        ]
    }
}

appID Team ID + Bundle ID (TEAMID.com.example.app) kimi formalaşır. paths — tətbiqin emal etməli olduğu URL nümunələri massivi. *, ? və NOT notasiyasından istifadə etmək olar: ["NOT /admin/*", "/product/*"]. Yollar sadalanma ardıcıllığı ilə yoxlanılır: ilk uyğunluq davranışı müəyyən edir. Yol uyğun gəlmirsə — link Safari-də açılır.

Linkin işlənməsi (Link Handling)

Assosiasiyanın uğurlu yoxlanışından sonra iOS linki tətbiqə ötürür. İşlənmə AppDelegate-də NSUserActivity üçün application(_:continue:restorationHandler:) metodu və ya SceneDelegate-də scene(_:continue:) vasitəsilə həyata keçirilir. Tərtibatçı NSUserActivityTypeBrowsingWeb tipi ilə NSUserActivity obyekti alır, URL-i çıxarır və müvafiq ekrana naviqasiya edir.

swift
// Universal Link-in AppDelegate-də işlənməsi
func application(
    _ application: UIApplication,
    continue userActivity: NSUserActivity,
    restorationHandler: @escaping UIUserActivityRestorationHandler
) -> Bool {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL
    else { return false }

    // URL-ə uyğun ekrana naviqasiya
    DeepLinkRouter.navigate(to: url)
    return true
}

Yuxarıdakı nümunədə DeepLinkRouter URL-i pars edən və müvafiq naviqasiya koordinatorunu çağıran fərdi sinifdir. SwiftUI üçün işlənmə onOpenURL metodu və ya environment(\.openURL) modifikatoru vasitəsilə aparılır. Yalnız foreground işəsalmanı deyil, həm də tətbiqin işə salınmadığı halı (cold start) emal etmək vacibdir: Universal Link bu halda tətbiqi işəsalma parametrləri vasitəsilə açır.

Brauzerə fallback (Browser Fallback)

Tətbiq quraşdırılmayıbsa, iOS avtomatik olaraq Universal Link-i Safari-də açır. Bu, Custom URL Scheme-dən əsas fərqdir: istifadəçi xəta görmür. Fallback eyni domenin standart veb-səhifəsidir. Tərtibatçı bu səhifədə App Store linki, məhsul haqqında məlumat və ya alternativ məzmun yerləşdirə bilər.

Vacib: fallback iOS səviyyəsində fərdiləşdirilə bilməz. iOS sadəcə URL-i Safari-də açır. Tətbiqi quraşdırmış və quraşdırmamış istifadəçilər üçün fərqli məzmun göstərmək üçün Smart App Banner (Safari üçün tətbiqi açmağı təklif edən meta-teq) və ya JavaScript vasitəsilə tətbiq quraşdırmasının aşkarlanmasından istifadə edin. Apple həmçinin Universal Link vasitəsilə quraşdırmaların atribusiyası üçün SKAdNetwork təqdim edir.

Universal Link və ənənəvi Deep Link (Custom URL Scheme) eyni problemi həll edir, lakin arxitektura və təhlükəsizlik baxımından prinsipial fərqlənir. Custom URL Scheme — Info.plist-də qeydiyyatdan keçən fərdi protokol (myapp://). İstənilən tətbiq eyni sxemi (myapp://) qeydiyyatdan keçirə bilər və iOS hansının "həqiqi" olduğunu müəyyən edə bilməz. Buna URL Scheme hijacking deyilir.

Universal Link hijacking problemini domen yoxlanışı vasitəsilə həll edir. Yalnız domen sahibi öz serverində apple-app-site-association yerləşdirərək konkret Bundle ID ilə əlaqəni təsdiqləyə bilər. İki tətbiq bir Universal Link-i qeydiyyatdan keçirə bilməz: konflikt yaranarsa, iOS son quraşdırılan tətbiqə üstünlük verir və ya Safari-ni açır.

Digər fərq: Fallback. Custom URL Scheme-in fallback-i yoxdur — tətbiq quraşdırılmayıbsa, brauzer xəta göstərir. Universal Link saytı açır. Vahid URL SEO dəyərinin qorunması deməkdir (link Google tərəfindən indekslənir) və istənilən cihazda olan istifadəçi müvafiq məzmun alır. Universal Link deep link-dən unified link-ə təkamül addımıdır.

XüsusiyyətCustom URL SchemeUniversal Link
Formatmyapp://pathhttps://domain/path
YoxlanışYoxapple-app-site-association
TəhlükəsizlikHijacking-ə həssasYalnız domen sahibi
FallbackXətaSafari-də sayt
iOS versiyasıiOS 3+iOS 9+

Konfiqurasiya Universal Link server və müştəri hissələrini əhatə edir. Server hissəsi — apple-app-site-association faylının https://domain/.well-known/apple-app-site-association ünvanında yerləşdirilməsi. Müştəri hissəsi — domenin Xcode-da Associated Domains-də qeydiyyatı (Capabilities → Associated Domains → applinks:example.com). Bundan sonra tətbiq avtomatik olaraq göstərilən domen üçün bütün Universal Link-ləri alır.

Konfiqurasiya addımları:

  1. Yaradın düzgün appID (TeamID.BundleID) və paths ilə apple-app-site-association
  2. Yerləşdirin faylı serverdə /.well-known/ yolunda .json genişlənməsi olmadan
  3. Yoxlayın əlçatanlığı: curl https://domain/.well-known/apple-app-site-association
  4. Əlavə edin domeni Associated Domains-də (Xcode Capabilities)
  5. Tətbiq edin NSUserActivity vasitəsilə işlənməni (AppDelegate və ya SceneDelegate)
  6. Sınaqdan keçirin real cihazda (simulyator assosiasiyanı yoxlamır)

Debug Universal Link — iOS tərtibatçılarının tez-tez baş ağrısı. İşləməyən linklərin əsas səbəbləri: apple-app-site-association faylı HTTPS vasitəsilə əlçatan deyil, səhv appID, Content-Type application/json deyil, /.well-known yolundan yönləndirmə, köhnə versiyanın keşlənməsi (Settings → Developer → Associated Domains Development vasitəsilə sıfırlama). Apple assosiasiyanı sınamaq üçün Apple Developer Console-da "Validation Checker" aləti təqdim edir.

Branch və digər MMP platformaları Universal Link konfiqurasiyasını asanlaşdırır: onlar apple-app-site-association faylını avtomatik yaradır və öz domenlərində host edirlər. Tərtibatçıya sadəcə Branch domenini Associated Domains-ə əlavə etmək və SDK-nı inteqrasiya etmək qalır. Bu, xüsusilə AASA faylını host etmək üçün öz server infrastrukturu olmayan startaplar üçün əlverişlidir.

Məhdudiyyətlər və uyğunluq

Universal Link-in bir neçə məhdudiyyəti var. Birincisi: apple-app-site-association faylı ciddi şəkildə HTTPS vasitəsilə əlçatan olmalıdır (HTTP dəstəklənmir). İkincisi: link Associated Domains-də göstərilən eyni domenə aparmalıdır. Çoxdomenli Universal Link işləmir — hər domen üçün Capabilities-də ayrıca qeyd və ayrıca AASA faylı tələb olunur. Üçüncüsü: Universal Link WKWebView-də işləmir — yalnız Safari və sistem komponentlərində.

Uyğunluq: iOS 9.0+ (Universal Link), watchOS 6.0+ (Handoff Universal Link), macOS 10.15+ (Catalyst və Mac tətbiqləri). Köhnə iOS versiyalarında link Safari-də açılır. Bu o deməkdir ki, iOS 8-də (cihazların 1%-dən azı) Universal Link işləməyəcək. Köhnə cihazlarda fallback kimi Custom URL Scheme dəstəkləmək tövsiyə olunur, əgər auditoriyaya köhnəlmiş versiyaları olan istifadəçilər daxildirsə.

iOS 16+ dəyişiklikləri: Apple SwiftUI üçün Universal Link işlənməsini təkmilləşdirdi. Gecikmiş emal imkanı ilə yeni environment(\.openURL) modifikatoru meydana çıxdı. iOS 16 həmçinin SFSafariViewController vasitəsilə də Universal Link-i tətbiqdə açmağa imkan verir. iOS 16 istifadəçiləri üçün Universal Link-in SwiftUI emalına tam keçid tövsiyə olunur, AppDelegate kodu yalnız geriyə uyğunluq üçün saxlanılır.

Tez-tez verilən suallar

Universal Link Custom URL Scheme-dən nə ilə fərqlənir?

Universal Link standart HTTPS-URL istifadə edir və serverdəki fayl vasitəsilə yoxlanılır. Custom URL Scheme yoxlama olmadan fərdi protokol (myapp://) istifadə edir, bu da onu eyni sxemi qeydiyyatdan keçirmiş digər tətbiq tərəfindən ələ keçirilməyə həssas edir.

apple-app-site-association harada yerləşdirilməlidir?

Fayl HTTPS serverinin kökündə /.well-known/apple-app-site-association yolunda yerləşdirilir (.json genişlənməsi olmadan). Server Content-Type: application/json qaytarmalıdır. Vacib: heç bir yönləndirmə olmamalıdır, fayl birbaşa əlçatan olmalıdır.

Niyə Universal Link tətbiqi açmır?

Əsas səbəblər: AASA faylında səhv Team ID və ya Bundle ID, faylın HTTPS vasitəsilə əlçatan olmaması, yönləndirmə, səhv Content-Type, köhnə versiyanın keşlənməsi. Developer → Associated Domains Development vasitəsilə yoxlayın və cihazı yenidən başladaraq keşi sıfırlayın.

Universal Link veb-sayt olmadan istifadə edilə bilərmi?

Xeyr — Universal Link üçün apple-app-site-association yerləşdirilmiş HTTPS server tələb olunur. Domen olmadan Universal Link işləmir. Alternativ: Custom URL Scheme (daha az təhlükəsiz) və ya öz domeni olan üçüncü tərəf xidmətləri (Branch, Firebase).

Universal Link Android-də işləyirmi?

Xeyr — Universal Link Apple-ın iOS, iPadOS, watchOS və macOS üçün eksklüziv texnologiyasıdır. Android-də analoqu App Link (Android 6.0+) adlanır və apple-app-site-association əvəzinə Digital Asset Links (assetlinks.json) istifadə edir.

Nəticə

  • Universal Link — iOS 9+-da tətbiqi və ya fallback olaraq Safari-də saytı açan https-link
  • apple-app-site-association — serverdə domenin tətbiqlə əlaqəsini yoxlayan JSON faylı
  • Təhlükəsizlik — Custom URL Scheme-dən fərqli olaraq, Universal Link üçüncü tərəf tətbiqləri tərəfindən ələ keçirilmədən qorunur
  • Vahid URL — bir link tətbiqi quraşdırmış və quraşdırmamış istifadəçilər üçün işləyir
  • Handoff və Spotlight — Universal Link Apple Continuity ekosistemi ilə inteqrasiya olunur
  • Konfiqurasiya server hissəsini (AASA faylı) və müştəri hissəsini (Associated Domains + NSUserActivity) əhatə edir
  • Sınaq yalnız real cihazda — simulyator domen assosiasiyasını yoxlamır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun