Firebase Dynamic Links — bu Google'ning aqlli havolalar yaratish xizmati bo'lib, ular foydalanuvchini ilova o'rnatilganmi yoki yo'qmi, ilovaning kerakli joyiga yo'naltiradi. Firebase Documentation ma'lumotlariga ko'ra, Dynamic Links ilova mavjud bo'lmaganda foydalanuvchini avtomatik ravishda App Store yoki Google Play'ga yo'naltiradi va o'rnatishdan keyin o'tish kontekstini tiklaydi. Firebase'ning Smart-havolalari o'rnatilmagan ilovalar bilan ishlamaydigan URL Scheme muammosini hal qiladi.
Asosiy ma'lumotlar
Firebase Dynamic Links — bu iOS va Android'da mobil ilovalar uchun yagona universal havolalar yaratadigan Google'ning bulut xizmati. Dinamik havola ilova ichidagi tarkibga chuqur havolani o'z ichiga oladi, lekin oddiy HTTPS havolasi kabi ishlaydi: agar ilova o'rnatilgan bo'lsa, uni to'g'ridan-to'g'ri ochadi, aks holda ilovalar do'koniga yo'naltiradi.
Oddiy URL Schemelardan farqli o'laroq, Dynamic Links deferred deep link texnologiyasi tufayli o'rnatilmagan ilovalar bilan ishlashi mumkin. Foydalanuvchi havola orqali o'tgandan keyin ilovani o'rnatganda, Firebase o'tish parametrlarini saqlaydi va birinchi ishga tushirishda ularni uzatadi. Bu referal dasturlar, marketing kampaniyalari va taklifnomalar uchun imkoniyatlar ochadi.
URL Schemalar o'rnatilgan ilovani talab qiladi va standart qayta yo'naltirish mexanizmiga ega emas. Firebase Dynamic Links bu muammoni qurilmada ilovaning o'rnatilish holatini aniqlaydigan va foydalanuvchini to'g'ri yo'naltiradigan vositachi Firebase veb xizmati orqali hal qiladi. Bitta havola ikkala platformada bir xil ishlaydi.
Firebase Dynamic Link Firebase Console'da ro'yxatdan o'tkaziladigan yourcode.page.link shaklidagi domendan foydalanadi. Foydalanuvchi bunday havola orqali o'tganda, Firebase qurilma turini va ilovaning o'rnatilish holatini aniqlaydi. iOS uchun Universal Links mexanizmi, Android uchun Digital Asset Links orqali avtomatik tekshirish bilan App Links ishlatiladi.
Qayta ishlash jarayoni bir necha ketma-ket bosqichlarni o'z ichiga oladi: havola orqali o'tishda brauzer Firebase serveriga GET so'rovi yuboradi, server platformani aniqlaydi va qurilmada ilova mavjudligini tekshiradi. Agar ilova o'rnatilgan bo'lsa — maqsadli ekranni ochish uchun parametrlar bilan Universal Link yoki Intent'ga yo'naltirish yaratiladi. Agar ilova o'rnatilmagan bo'lsa — yuklab olish uchun App Store yoki Google Play'ga yo'naltirish amalga oshiriladi.
Ilova havolani Firebase SDK'ni ishga tushirish bosqichida oladi. getDynamicLink() metodi o'tish haqidagi ma'lumotlar bilan PendingResult qaytaradi. Muvaffaqiyatli qabul qilingandan so'ng, havoladan deep link parametrlari, analitika uchun UTM teglari va havola yaratish vaqtida uzatilgan ixtiyoriy ma'lumotlar chiqariladi.
Firebase Console Dynamic Links yaratish uchun vizual interfeysni taqdim etadi. Dasturchi chuqur havolani (deep link URL), kampaniya nomini, iOS va Android uchun alohida sozlamalarni hamda analitika parametrlarini belgilaydi. Yaratilgandan so'ng, Firebase https://yourcode.page.link/abc123 shaklida qisqa havola yaratadi, undan reklama materiallarida, elektron pochta xabarlarida va ijtimoiy tarmoqlarda foydalanish mumkin.
Dasturiy ravishda Dynamic Links yaratish uchun Firebase REST API yoki mijob SDK ishlatiladi. REST API ijtimoiy tarmoqlar uchun havola va o'tishlarning asinxron analitikasini o'z ichiga olgan holda marketing kampaniyalari uchun moslashtirilgan parametrlar bilan ommaviy havola yaratish imkonini beradi. API orqali havolalar yaratishda socialMetaTagInfo parametrlarini to'g'ri ko'rsatish muhim — ular havola messenjerlar va ijtimoiy tarmoqlarda oldindan ko'rish kartasi bilan uzatilganda qanday ko'rinishini aniqlaydi.
| Parametr | Vazifasi | Majburiyligi |
|---|---|---|
| Deep Link URL | Ilova tarkibiga ichki havola | Ha |
| iOS Bundle ID | App Store'dagi ilova identifikatori | iOS uchun |
| Android Package Name | Google Play'dagi paket nomi | Android uchun |
| Fallback URL | Ilova mavjud bo'lmaganda veb sahifa | Yo'q |
| UTM teglari | Google Analytics uchun parametrlar | Yo'q |
iOS'da Firebase Dynamic Links bilan ishlash uchun Firebase SDK'ni CocoaPods yoki Swift Package Manager orqali ulash, Info.plist'ni GOOGLE_APP_ID bilan sozlash va loyihaning Associated Domains'ida Dynamic Links domenini ro'yxatdan o'tkazish talab qilinadi. Shundan so'ng, ilova Firebase tomonidan yaratilgan Universal Links'larni avtomatik qayta ishlaydi.
Xcode'da applinks:yourcode.page.link shaklida Associated Domains imkoniyatini qo'shish kerak. Firebase SDK Universal Links'larni qayta ishlash uchun application(_:continue:restorationHandler:) metodidan foydalanadi, shuning uchun AppDelegate bilan qo'shimcha integratsiya talab qilinmaydi — Firebase User Activity'dan Dynamic Link parametrlarini avtomatik chiqaradi.
Firebase'ni to'g'ri ishga tushirish va Dynamic Links handlerini ro'yxatdan o'tkazish uchun Info.plist sozlash namunasi. FIROptions kaliti GoogleService-Info.plist loyiha identifikatorini o'z ichiga olishi kerak.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Agar AppDelegate proksi o'chirilgan bo'lsa, handleUniversalLink(_:) metodini qo'lda chaqirish va continue NSUserActivity'dan User Activity'ni uzatish kerak. Firebase SDK havola parametrlarini avtomatik chiqaradi va completion handler orqali DynamicLink qaytaradi.
Android'da Firebase Dynamic Links integratsiyasi build.gradle'ga bog'liqliklarni va Firebase Console'dan google-services.json faylini qo'shish bilan boshlanadi. Dynamic Links domeni Firebase Console'da ro'yxatdan o'tkaziladi, shundan so'ng bu domenli barcha havolalar VIEW harakati bilan Intent Filter orqali Android ilovasi tomonidan avtomatik tan olinadi. To'g'ri ishlash uchun ildiz va modul build.gradle'ga Google Services plaginini qo'shish va Gradle sinxronizatsiyasini amalga oshirish kerak.
Android'da havolalarni to'g'ri qayta ishlash uchun kiruvchi havolalarni qabul qilishi kerak bo'lgan Activity'ga Dynamic Links domeni uchun Intent Filter qo'shish kerak. Filter https sxemasi, Dynamic Links domeningizning hosti va standart yo'lni o'z ichiga olishi kerak.
AndroidManifest.xml'da yourcode.page.link domenida Dynamic Links qabul qilish uchun Intent Filter namunasi.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<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="yourcode.page.link" />
</intent-filter>
</activity>
Dynamic Links qabul qiladigan Activity uchun launchMode singleTask qilib belgilash muhim. Bu havola orqali takroriy o'tishda yangi Activity nusxasining yaratilishining oldini oladi va barcha kiruvchi deep link'larni bitta nusxada to'g'ri qayta ishlash imkonini beradi.
Android uchun Firebase SDK havola haqidagi ma'lumotlar bilan PendingTask obyektini qaytaradigan FirebaseDynamicLinks.getInstance().getDynamicLink(intent) metodini taqdim etadi. DynamicLink obyektidan chuqur URI, UTM parametrlari va o'tish vaqti tamg'asi chiqariladi. Qayta ishlashni Activity'ning onCreate() va onNewIntent() metodlarida bajarish tavsiya etiladi.
Qayta ishlashda Dynamic Link sovuq ishga tushirish (cold start) paytida ham, allaqachon ishlayotgan ilovaga boshqa ilovadan o'tish paytida ham olinishi mumkinligini hisobga olish muhim. Ikkinchi holat uchun onNewIntent()'ni qayta yozish va Dynamic Link tekshiruvini qayta chaqirish kerak.
MainActivity'da Firebase Dynamic Link'ni olish va qayta ishlash namunasi. Kod sovuq ishga tushirishni ham, boshqa ilovadan o'tishni ham qayta ishlaydi.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
addOnSuccessListener metodi DynamicLink qaytaradi, undan maqsadli havola link?.link orqali chiqariladi. Agar listener null qaytarsa, bu Intent tarkibida Dynamic Link yo'qligini anglatadi — bu kiruvchi havolasiz oddiy ilova ishga tushirilishi. Shuningdek, campaign, medium, source va contentni o'z ichiga olgan o'tish analitikasi uchun UTM teglari mavjud bo'lib, ularni har bir marketing kanalining samaradorligini batafsil baholash uchun Google Analytics'ga uzatish mumkin.
Tez-tez so'raladigan savollar
Firebase Dynamic Links deferred deep link qo'llab-quvvatlaydi — havola ilova o'rnatilmagan bo'lsa ham kontekstni saqlaydi. O'rnatishdan so'ng, ilova barcha o'tish parametrlarini oladi, bu oddiy URL Scheme yoki Universal Links bilan mumkin emas.
Firebase Dynamic Links bepul Firebase Spark tarif rejasiga kiradi. Yaratiladigan havolalar soni cheklanmagan. Biroq, 2024 yildan boshlab Google yangi infratuzilmaga o'tishni e'lon qildi, shuning uchun shartlar o'zgarishi mumkin.
Dynamic Links mobil ilovalar uchun mo'ljallangan. Ish stoli brauzeridan o'tishda havola qayta yo'naltirish URL'ini ochadi. Veb-ilovalar uchun oddiy havolalar yoki o'zingizning qayta yo'naltirish mantiqingizdan foydalaning.
Firebase Console xatti-harakatni oldindan ko'rish uchun Test Dynamic Link tugmasini taqdim etadi. Shuningdek, barcha o'tish stsenariylarini mahalliy sinab ko'rish uchun o'rnatilgan Firebase SDK bilan Android emulyatori yoki iOS simulatoridan foydalanishingiz mumkin.
Firebase Dynamic Link qisqa havolasi page.link domeni va taxminan 7 belgidan iborat tasodifiy qo'shimchadan iborat. Umumiy uzunlik taxminan 30 belgi. Ichidagi deep link istalgan uzunlikda bo'lishi mumkin, ammo muvofiqlik uchun uni 2 KB bilan cheklash 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.