App Link — bu Android (Android 6.0+) mexanizmi bo'lib, o'rnatilgan ilovada veb havolalarni avtomatik ravishda ochadi va tanlash dialogini chetlab o'tadi. Bu atama Google tomonidan 2015-yilda Android 6.0 Marshmallow bilan birga kiritilgan. Android Developers ma'lumotlariga ko'ra, App Link Digital Asset Links — serverdagi fayl orqali kriptografik tasdiqlashdan foydalanadi, bu domenning ilova ishlab chiqaruvchisiga tegishli ekanligini tasdiqlaydi.
Asosiy ma'lumotlar
App Link (Android App Link) — bu standart HTTPS havola bo'lib, Android qurilmasida bosilganda brauzer va ilova o'rtasida standart tanlash dialogini ko'rsatmasdan o'rnatilgan ilovani avtomatik ochadi. Google App Link-ni Android 6.0 (API 23) da «tanlash dialogi» muammosiga yechim sifatida taqdim etdi, bu dialog qo'shimcha bosish va foydalanuvchi chalkashligi tufayli deep link konversiyasini kamaytirardi.
Asosiy yangilik: tasdiqlash. Android Digital Asset Links API orqali domen haqiqatan ham ilova ishlab chiqaruvchisiga tegishli ekanligini tekshiradi. Google Play Store nashr qilishda App Link-ni tekshiradi va tasdiqlash muvaffaqiyatsiz bo'lsa, yangilanishni rad etishi mumkin. Bu App Link-ni Custom URL Scheme-dan xavfsizroq qiladi: boshqa hech qanday ilova sizning domeningizga havolani tutib ololmaydi.
Digital Asset Links — bu Google nafaqat App Link uchun, balki veb-saytlarni qidiruv natijalarida, Google Assistant va Smart Lock for Passwords-da ilovalar bilan bog'lash uchun foydalanadigan ochiq protokoldir. Protokol kriptografik tasdiqlashga asoslangan: assetlinks.json da ilova imzosining SHA256 izi ko'rsatiladi, bu esa soxtalashtirishni istisno qiladi.
App Link ning ishlash jarayoni uch bosqichdan iborat: Digital Asset Links tasdiqlashi, Intent Filter orqali qayta ishlash va avtomatik yo'naltirish. Har bir bosqich majburiydir. Agar tasdiqlash muvaffaqiyatsiz bo'lsa, Android tanlash dialogini ko'rsatadi — bunday deep link oddiy kabi ishlaydi, lekin avtomatik yo'naltirish afzalligisiz.
Asset Links — serverda https://domen/.well-known/assetlinks.json manzilida joylashtirilgan JSON fayli. Fayl quyidagi maydonlarga ega ob'ektlar massivini o'z ichiga oladi: relation (aloqa turini tavsiflovchi satrlar massivi), target (ilovaning namespace va package_name, shuningdek sha256_cert_fingerprints — imzo sertifikatining SHA256 izlari massivi bilan ob'ekt).
// assetlinks.json — App Link ning minimal konfiguratsiyasi
[{
"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 ilova imzolangan sertifikatdan olinadi. Debug qurilish uchun standart Android debug sertifikati, release uchun — Google Play Console dan sertifikat yoki o'zingizning sertifikatingiz ishlatiladi. Muhim: imzo sertifikati o'zgartirilganda (masalan, App Signing by Google Play-ga o'tishda) serverda assetlinks.json yangilanishi kerak, aks holda App Link ishlamaydi.
Android App Link-ni birinchi bosishda tekshiradi. Tizim serverdan assetlinks.json yuklaydi, package_name va SHA256 izini o'rnatilgan ilova sertifikati bilan solishtiradi. Ma'lumotlar mos kelsa, Android Intent Filter-ni tasdiqlangan deb belgilaydi va bu domen uchun barcha keyingi havolalar avtomatik, dialogsiz ochiladi.
// AndroidManifest.xml — App Link uchun 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-ga assetlinks.json ni tekshirishni buyuradigan majburiy atribut. Bu atributsiz Intent Filter tasdiqlanmaydi va App Link faollashtirilmaydi. Android bir Activity da turli xostlar uchun bir nechta Intent Filter-ni qo'llab-quvvatlaydi. Tizim har bir xostni alohida tekshiradi. Tasdiqlash asinxron tarzda amalga oshiriladi va birinchi o'tishda 20 soniyagacha davom etishi mumkin.
Muvaffaqiyatli tasdiqlashdan so'ng Android tasdiqlangan Intent Filter-ga mos keladigan istalgan havolani bosganda ilovani avtomatik ochadi. Foydalanuvchi tanlash dialogini ko'rmaydi — ilova bir zumda ochiladi. Agar ilova o'rnatilmagan bo'lsa, havola brauzerda (oddiy veb-sahifa kabi) ochiladi. Bu ideal foydalanuvchi tajribasi: keraksiz harakatlarsiz muammosiz o'tish.
Muhim: avtomatik yo'naltirish faqat HTTPS sxemasi uchun ishlaydi. App Link HTTP (xavfsiz bo'lmagan protokol) ni qo'llab-quvvatlamaydi. Agar foydalanuvchi qo'lda HTTP havolasini ochsa (masalan, SMS dan), Android tasdiqlashni amalga oshirmaydi va tanlash dialogini ko'rsatadi. Ilovaga olib boradigan barcha havolalar uchun HTTPS dan foydalanish va serverda HTTP → HTTPS yo'naltirishni sozlash tavsiya etiladi.
App Link Android-da Deep Link ning evolyutsiyasi, uning o'rnini bosuvchi emas. Ularning orasidagi farq asosiy hisoblanadi. Oddiy Deep Link (Custom URL Scheme) maxsus sxema (myapp://) va autoVerifysiz Intent Filter orqali ishlaydi. Android ilova haqiqatan ham ushbu sxema bilan bog'liqligini tekshirmaydi — har qanday ilova myapp:// ni ro'yxatdan o'tkazib, havolalarni tutib olishi mumkin.
App Link Deep Link ning uchta muammosini hal qiladi. Birinchisi: xavfsizlik — Digital Asset Links orqali tasdiqlash havolalarni tutib olishni istisno qiladi. Ikkinchisi: foydalanuvchi tajribasi — tanlash dialogining yo'qligi maqsadli harakatga konversiyani 20–40% ga oshiradi. Uchinchisi: indekslash — Google App Link ning HTTPS havolalarini indekslaydi va ularni qidiruv natijalarida ilova ichidagi kontentga havolalar sifatida ko'rsatishi mumkin.
Moslik: App Link Android 6.0+ (qurilmalarning 99%) da ishlaydi. Android 5.x (Lollipop) uchun tanlash dialogi bilan oddiy Deep Link ishlatiladi. Shuning uchun ikkala mexanizmni qo'llab-quvvatlash tavsiya etiladi: zamonaviy qurilmalar uchun App Link va eski versiyalar uchun Custom URL Scheme fallback sifatida. autoVerify="true" bilan Intent Filter orqaga qarab moslikni buzmaydi — Android < 6 da atribut e'tiborga olinmaydi.
| Xususiyat | Deep Link | App Link |
|---|---|---|
| Sxema | Maxsus (myapp://) | HTTPS (https://domen) |
| Tasdiqlash | Yo'q | assetlinks.json |
| Tanlash dialogi | Ko'rsatiladi | Avtomatik yo'naltirish |
| Android versiyasi | API 1+ | API 23+ (6.0+) |
| Google indekslashi | Yo'q | Ha (HTTPS URL) |
Sozlash App Link uch bosqichni talab qiladi: manifestda Intent Filter konfiguratsiyasi, serverda assetlinks.json joylashtirish va tasdiqlashni tekshirish. Birinchi bosqich — AndroidManifest.xml ga android:autoVerify="true" bilan Intent Filter qo'shish. HTTPS sxemasi, xost va ilova qayta ishlashi kerak bo'lgan yo'llarni ko'rsatish muhim. Yo'llar pastki papkalar uchun wildcard (*) ni o'z ichiga olishi mumkin.
Ikkinchi bosqich — assetlinks.json yaratish. Faylni Android Studio (Tools → App Links Assistant) orqali yaratish mumkin. Yordamchi, shuningdek, nosozliklarni tuzatish va sinovdan o'tkazishda yordam beradi. Fayl serverda /.well-known/assetlinks.json yo'lida joylashtiriladi. Server Content-Type: application/json qaytarishi va HTTPS orqali yo'naltirishlarsiz mavjud bo'lishi kerak. Google Play Console ham Publishing bo'limida App Link tasdiqlash holatini ko'rsatadi.
Sinov — uchinchi bosqich. Tekshirish uchun adb dan foydalaning: adb shell am start -W -a android.intent.action.VIEW -d "https://example.com/product/42" buyrug'i ilovani ochadi. Agar ilova o'rniga brauzer ochilsa — assetlinks.json va autoVerify ni tekshiring. Android Studio App Links Assistant o'rnatilgan tekshirgichni o'z ichiga oladi: har bir domen va yo'l uchun tasdiqlash holatini ko'rsatadi. Avtomatik sinov uchun Intent Matcher bilan Android Testing Library dan foydalaning.
Android 12 (API 31) App Link ni qayta ishlashga o'zgartirishlar kiritdi. Yangi domen-spesifik tasdiqlash qo'shildi: tizim har bir havolani alohida tekshiradi, butun Intent Filter ni emas. Bu xavfsizlikni oshiradi, lekin yangi yo'llar qo'shilganda assetlinks.json faylini yangilashni talab qiladi. Android 12 shuningdek ADB bilan birga Android App Links Assistant-ni taqdim etdi — shell orqali tasdiqlashni boshqarish uchun buyruqlar.
Bir nechta domenlar — ishlab chiqarish uchun odatiy stsenariy. Ilova example.com, m.example.com va example.org dan havolalarni qayta ishlashi mumkin. Har bir domen uchun tegishli serverda alohida assetlinks.json kerak. Manifestda bir nechta Intent Filter qo'shiladi — har bir domen uchun bittadan. Barcha domenlar HTTPS orqali mavjud bo'lishi va mustaqil tasdiqlashdan o'tishi kerak.
App Link va Jetpack Navigation — zamonaviy Android ilovalarida App Link ni qayta ishlash uchun tavsiya etilgan usul. Jetpack Navigation nav_graph.xml da yoki NavDeepLinkRequest orqali deklarativ deep link-larni qo'llab-quvvatlaydi. Bu navigatsiyani soddalashtiradi: ishlab chiqaruvchi ma'lum URL ostida qaysi ekran ochilishini tavsiflaydi, Navigation komponenti esa Intent-ni qayta ishlaydi va navigatsiya stekini tiklaydi. Google App Link uchun aynan Jetpack Navigation dan foydalanishni tavsiya qiladi.
// App Link ni Jetpack Navigation orqali qayta ishlash
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 nashr qilishda App Link ni tekshiradi. Agar manifestda autoVerify bilan Intent Filter ko'rsatilgan bo'lsa, lekin assetlinks.json mavjud bo'lmasa yoki noto'g'ri bo'lsa, Google Play ogohlantirish bilan yangilanishni rad etishi mumkin. Ishlab chiqaruvchi konsolida (Policy and Programs → App Links) har bir domenning tasdiqlash holati ko'rsatiladi. Nashr qilishdan oldin albatta holatni tekshiring — yangilanish rad etilgandan keyin tuzatish chiqarishni kechiktiradi.
Tez-tez so'raladigan savollar
App Link — bu Digital Asset Links orqali tasdiqlash bilan Deep Link. Asosiy farqlar: App Link maxsus sxema o'rniga HTTPS sxemasidan foydalanadi, tanlash dialogini ko'rsatmaydi va Google tomonidan indekslanadi. Oddiy Deep Link Androidning barcha versiyalarida ishlaydi, lekin ilovani qo'lda tanlashni talab qiladi.
Fayl HTTPS serverining ildizida /.well-known/assetlinks.json yo'lida joylashtiriladi. Server Content-Type: application/json qaytarishi kerak. Fayl imzo sertifikati o'zgartirilganda yoki yangi domenlar qo'shilganda yangilanishi kerak.
Asosiy sabablar: Intent Filter da android:autoVerify="true" yo'q, assetlinks.json HTTPS orqali mavjud emas, noto'g'ri SHA256 izi, boshqa imzo sertifikati (debug vs release). Tasdiqlash holatini adb shell dumpsync domain_verification orqali tekshiring.
Yo'q — App Link uchun mavjud assetlinks.json bilan HTTPS server talab qilinadi. Domeningiz bo'lmasa, faylni joylashtirish uchun Firebase Hosting yoki GitHub Pages dan foydalaning. Alternativ: Custom URL Scheme (tasdiqlashsiz) yoki Firebase Dynamic Links.
Yo'q — App Link Android 6.0 (API 23) va undan yuqori versiyalarda qo'llab-quvvatlanadi. Android 5 da android:autoVerify="true" bilan Intent Filter atributni e'tiborsiz qoldiradi va tanlash dialogi bilan oddiy Deep Link kabi ishlaydi. Orqaga qarab moslik uchun ikkala mexanizmni qo'llab-quvvatlash tavsiya etiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.