App Link — Android (Android 6.0+) mexanizmidir, quraşdırılmış tətbiqdə veb keçidləri seçim dialoqu olmadan avtomatik açır. Termin Google tərəfindən 2015-ci ildə Android 6.0 Marshmallow ilə birlikdə təqdim edilib. Android Developers-ə görə, App Link Digital Asset Links — serverdəki fayl vasitəsilə kriptoqrafik təsdiqləmədən istifadə edir, domenin tətbiq tərtibatçısına aid olduğunu təsdiqləyir.
Əsas məqamlar
App Link (Android App Link) — Android cihazında keçid edərkən brauzer və tətbiq arasında standart seçim dialoqu göstərmədən quraşdırılmış tətbiqi avtomatik açan standart HTTPS keçididir. Google App Link-i Android 6.0 (API 23)-də «seçim dialoqu» probleminin həlli kimi təqdim etdi, bu dialoq əlavə klik və istifadəçi çaşqınlığı səbəbindən deep link konversiyasını azaldırdı.
Əsas yenilik: təsdiqləmə. Android Digital Asset Links API vasitəsilə domenin həqiqətən tətbiq tərtibatçısına aid olub-olmadığını yoxlayır. Google Play Store dərc edərkən App Link-i yoxlayır və təsdiqləmə uğursuz olarsa yeniləməni rədd edə bilər. Bu, App Link-i Custom URL Scheme-dən daha təhlükəsiz edir: heç bir başqa tətbiq sizin domeninizə keçidi ələ keçirə bilməz.
Digital Asset Links — Google-un təkcə App Link üçün deyil, həm də veb-saytları axtarış nəticələrində, Google Assistant və Smart Lock for Passwords-da tətbiqlərlə əlaqələndirmək üçün istifadə etdiyi açıq protokoldur. Protokol kriptoqrafik təsdiqləməyə əsaslanır: assetlinks.json-da tətbiq imzası sertifikatının SHA256 izi göstərilir ki, bu da saxtakarlığı istisna edir.
App Link-in işləmə prosesi üç mərhələdən ibarətdir: Digital Asset Links təsdiqləməsi, Intent Filter vasitəsilə emal və avtomatik keçid. Hər mərhələ məcburidir. Təsdiqləmə uğursuz olarsa, Android seçim dialoqu göstərir — belə deep link adi kimi işləyir, lakin avtomatik keçid üstünlüyü olmadan.
Asset Links — https://domen/.well-known/assetlinks.json ünvanında serverdə yerləşdirilən JSON faylı. Fayl aşağıdakı sahələri olan obyektlər massivini ehtiva edir: relation (əlaqə növünü təsvir edən sətirlər massivi), target (tətbiqin namespace və package_name, həmçinin sha256_cert_fingerprints — imza sertifikatının SHA256 izləri massivi olan obyekt).
// assetlinks.json — App Link-in minimal konfiqurasiyası
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:AD:A4:C5:AD:6B:01:14:79:6B:CB:12:6B:21:39:6F:EA"
]
}
}]
SHA256 izi tətbiqin imzalandığı sertifikatdan əldə edilir. Debug quruluşu üçün standart Android debug sertifikatı, release üçün — Google Play Console-dan sertifikat və ya öz sertifikatınız istifadə olunur. Vacib: imza sertifikatı dəyişdirilərkən (məsələn, App Signing by Google Play-ə keçərkən) serverdə assetlinks.json yenilənməlidir, əks halda App Link işləməyi dayandıracaq.
Android App Link-i ilk keçiddə yoxlayır. Sistem serverdən assetlinks.json yükləyir, package_name və SHA256 izini quraşdırılmış tətbiqin sertifikatı ilə müqayisə edir. Məlumatlar uyğun gələrsə, Android Intent Filter-i təsdiqlənmiş kimi qeyd edir və bu domenə bütün sonrakı keçidlər avtomatik, dialoq olmadan açılır.
// AndroidManifest.xml — App Link üçün Intent Filter
<activity
android:name=".ui.ProductActivity"
android:exported="true">
<intent-filter android:autoVerify="true">
<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="example.com"
android:pathPrefix="/product" />
</intent-filter>
</activity>
autoVerify="true" — Android-ə assetlinks.json-u yoxlamağı tapşıran məcburi atribut. Bu atribut olmadan Intent Filter təsdiqlənməyəcək və App Link aktivləşməyəcək. Android bir Activity-də müxtəlif hostlar üçün bir neçə Intent Filter-i dəstəkləyir. Sistem hər hostu ayrıca yoxlayır. Təsdiqləmə asinxron şəkildə aparılır və ilk keçiddə 20 saniyəyə qədər çəkə bilər.
Uğurlu təsdiqləmədən sonra Android təsdiqlənmiş Intent Filter-ə uyğun gələn istənilən keçiddə tətbiqi avtomatik açır. İstifadəçi seçim dialoqu görmür — tətbiq dərhal açılır. Tətbiq quraşdırılmayıbsa, keçid brauzerdə (adi veb-səhifə kimi) açılır. Bu ideal istifadəçi təcrübəsidir: lazımsız hərəkətlər olmadan problemsiz keçid.
Vacib: avtomatik keçid yalnız HTTPS sxemi üçün işləyir. App Link HTTP (təhlükəsiz olmayan protokol) dəstəkləmir. İstifadəçi əl ilə HTTP keçidi açarsa (məsələn, SMS-dən), Android təsdiqləmə aparmır və seçim dialoqu göstərir. Tətbiqə aparan bütün keçidlər üçün HTTPS istifadə etmək və serverdə HTTP → HTTPS yönləndirməsi qurmaq tövsiyə olunur.
App Link Android-də Deep Link-in təkamülüdür, əvəzi deyil. Aralarındakı fərq əsaslıdır. Adi Deep Link (Custom URL Scheme) fərdi sxemlə (myapp://) və autoVerify olmadan Intent Filter vasitəsilə işləyir. Android tətbiqin bu sxemlə həqiqətən əlaqəli olub-olmadığını yoxlamır — istənilən tətbiq myapp:// qeydiyyatdan keçirib keçidləri ələ keçirə bilər.
App Link Deep Link-in üç problemini həll edir. Birinci: təhlükəsizlik — Digital Asset Links vasitəsilə təsdiqləmə keçidlərin ələ keçirilməsini istisna edir. İkinci: istifadəçi təcrübəsi — seçim dialoqunun olmaması hədəf əməliyyata konversiyanı 20–40% artırır. Üçüncü: indeksləşdirmə — Google App Link-in HTTPS keçidlərini indeksləşdirir və axtarış nəticələrində tətbiq daxilindəki məzmuna keçidlər kimi göstərə bilər.
Uyğunluq: App Link Android 6.0+ (cihazların 99%) işləyir. Android 5.x (Lollipop) üçün seçim dialoqu ilə adi Deep Link istifadə olunur. Buna görə hər iki mexanizmi dəstəkləmək tövsiyə olunur: müasir cihazlar üçün App Link və köhnə versiyalar üçün Custom URL Scheme fallback kimi. autoVerify="true" olan Intent Filter geriyə uyğunluğu pozmur — Android < 6-da atribut nəzərə alınmır.
| Xüsusiyyət | Deep Link | App Link |
|---|---|---|
| Sxem | Fərdi (myapp://) | HTTPS (https://domen) |
| Təsdiqləmə | Yox | assetlinks.json |
| Seçim dialoqu | Göstərilir | Avtomatik keçid |
| Android versiyası | API 1+ | API 23+ (6.0+) |
| Google indeksləşdirməsi | Yox | Bəli (HTTPS URL) |
Qurulması App Link üç addım tələb edir: manifestdə Intent Filter-in konfiqurasiyası, serverdə assetlinks.json-un yerləşdirilməsi və təsdiqləmənin yoxlanması. İlk addım — AndroidManifest.xml-ə android:autoVerify="true" ilə Intent Filter əlavə etmək. HTTPS sxemini, hostu və tətbiqin emal etməli olduğu yolları göstərmək vacibdir. Yollar alt qovluqlar üçün wildcard (*) ehtiva edə bilər.
İkinci addım — assetlinks.json-un yaradılması. Faylı Android Studio (Tools → App Links Assistant) vasitəsilə yaratmaq olar. Köməkçi həmçinin debug və test etməyə kömək edir. Fayl serverdə /.well-known/assetlinks.json yolunda yerləşdirilir. Server Content-Type: application/json qaytarmalı və yönləndirmələr olmadan HTTPS ilə əlçatan olmalıdır. Google Play Console da Publishing bölməsində App Link təsdiqləmə statusunu göstərir.
Test etmə — üçüncü addım. Yoxlamaq üçün adb istifadə edin: adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" əmri tətbiqi açır. Tətbiq əvəzinə brauzer açılırsa — assetlinks.json və autoVerify-i yoxlayın. Android Studio App Links Assistant daxili test cihazı ehtiva edir: hər domen və yol üçün təsdiqləmə statusunu göstərir. Avtomatik test üçün Intent Matcher ilə Android Testing Library istifadə edin.
Android 12 (API 31) App Link emalına dəyişikliklər etdi. Yeni domen-spesifik təsdiqləmə əlavə edildi: sistem hər keçidi ayrıca yoxlayır, bütün Intent Filter-i yox. Bu təhlükəsizliyi artırır, lakin yeni yollar əlavə edərkən assetlinks.json faylının yenilənməsini tələb edir. Android 12 həmçinin ADB ilə birlikdə Android App Links Assistant-ı təqdim etdi — shell vasitəsilə təsdiqləməni idarə etmək üçün əmrlər.
Çoxlu domenlər — istehsalat üçün tipik ssenari. Tətbiq example.com, m.example.com və example.org-dan keçidləri emal edə bilər. Hər domen üçün müvafiq serverdə ayrıca assetlinks.json lazımdır. Manifestdə bir neçə Intent Filter əlavə olunur — hər domen üçün bir. Bütün domenlər HTTPS ilə əlçatan olmalı və müstəqil təsdiqləmədən keçməlidir.
App Link və Jetpack Navigation — müasir Android tətbiqlərində App Link-in emalı üçün tövsiyə olunan üsul. Jetpack Navigation nav_graph.xml-də və ya NavDeepLinkRequest vasitəsilə deklarativ deep link-ləri dəstəkləyir. Bu naviqasiyanı sadələşdirir: tərtibatçı müəyyən URL altında hansı ekranın açıldığını təsvir edir, Navigation komponenti isə Intent-i emal edir və naviqasiya yığınını bərpa edir. Google App Link üçün məhz Jetpack Navigation-dan istifadə etməyi tövsiyə edir.
// App Link-in Jetpack Navigation vasitəsilə işlənməsi
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
handleDeepLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleDeepLink(intent)
}
private fun handleDeepLink(intent: Intent) {
intent.data?.let { uri ->
navController.handleDeepLink(NavDeepLinkRequest
.Builder
.fromUri(uri)
.build()
)
}
}
}
Google Play Store dərc edərkən App Link-i yoxlayır. Manifestdə autoVerify ilə Intent Filter göstərilibsə, lakin assetlinks.json əlçatan deyilsə və ya səhvdirsə, Google Play xəbərdarlıqla yeniləməni rədd edə bilər. Tərtibatçı konsolunda (Policy and Programs → App Links) hər domenin təsdiqləmə statusu göstərilir. Dərc etməzdən əvvəl mütləq statusu yoxlayın — yeniləmənin rədd edilməsindən sonra düzəliş buraxılışı gecikdirir.
Tez-tez verilən suallar
App Link — Digital Asset Links vasitəsilə təsdiqləmə ilə Deep Link-dir. Əsas fərqlər: App Link fərdi sxem əvəzinə HTTPS sxemindən istifadə edir, seçim dialoqu göstərmir və Google tərəfindən indeksləşdirilir. Adi Deep Link Android-in bütün versiyalarında işləyir, lakin tətbiqin əl ilə seçilməsini tələb edir.
Fayl HTTPS serverinin kökündə /.well-known/assetlinks.json yolunda yerləşdirilir. Server Content-Type: application/json qaytarmalıdır. Fayl imza sertifikatı dəyişdirilərkən və ya yeni domenlər əlavə edilərkən yenilənməlidir.
Əsas səbəblər: Intent Filter-də android:autoVerify="true" yoxdur, assetlinks.json HTTPS ilə əlçatan deyil, səhv SHA256 izi, fərqli imza sertifikatı (debug vs release). Təsdiqləmə statusunu adb shell dumpsync domain_verification vasitəsilə yoxlayın.
Xeyr — App Link üçün əlçatan assetlinks.json olan HTTPS server tələb olunur. Domeniniz yoxdursa, faylı yerləşdirmək üçün Firebase Hosting və ya GitHub Pages istifadə edin. Alternativ: Custom URL Scheme (təsdiqləmə olmadan) və ya Firebase Dynamic Links.
Xeyr — App Link Android 6.0 (API 23) və daha yuxarı versiyalarda dəstəklənir. Android 5-də android:autoVerify="true" olan Intent Filter atributa məhəl qoymur və seçim dialoqu ilə adi Deep Link kimi işləyir. Geriyə uyğunluq üçün hər iki mexanizmi dəstəkləmək tövsiyə olunur.
Nəticə
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.
Həm də oxuyun