Foydalanuvchilarni ilovani yangilashga qanday majburlash mumkin
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
Ilova ishga tushganda serverdan minimal va joriy versiyalarni oladi: minimaldan past bo‘lsa — bloklovchi yangilash ekrani, joriydan past bo‘lsa — yumshoq taklif, API esa eski mijozlarni o‘tishgacha qo‘llab-quvvatlaydi.
Qisqa javob
Birinchi relizdanoq ikki narsa kerak:
- Ishga tushirishda versiyani tekshirish. Ilova backend yoki remote config’dan ikki qiymat oladi:
min_supported_versionvalatest_version. - Ikki xil javob. Versiya minimaldan past — qattiq yangilash (hard update), usiz davom etib bo‘lmaydi. Joriydan past — yumshoq yangilash (soft update), keyinga qoldirish mumkin.
Agar o‘rnatilgan versiyalarda bunday tekshiruv bo‘lmasa, ularni yangilashga «majburlab» bo‘lmaydi — faqat API’ni buzish mumkin, bu esa yomonroq. Shuning uchun mexanizm eng birinchi versiyaga qo‘shiladi.
Minimal versiyani tekshirish
Qiymatlar manbai:
- O‘z backend’ingiz — konfiguratsiya endpoint’i yoki API javoblaridagi sarlavha. To‘liq nazorat, iOS va Android uchun alohida versiyalar.
- Remote config (masalan, Firebase Remote Config) — deploy’siz o‘zgaradi, platforma va auditoriya bo‘yicha shartlar bor.
Konfiguratsiya namunasi:
{
"ios": { "min_supported_version": "2.3.0", "latest_version": "2.5.1" },
"android": { "min_supported_version": "2.3.0", "latest_version": "2.5.1" }
}
Muhim:
- Versiyalarni satr sifatida emas, qismlarga bo‘lib son sifatida solishtiring:
2.10.02.9.0’dan yangiroq. - Minimal versiyani faqat build ikkala do‘konda ham mavjud bo‘lgandan keyin oshiring — aks holda foydalanuvchi «yangilang» degan yozuvni ko‘radi, lekin yangilanish hali yo‘q.
- Agar konfiguratsiya yuklanmasa (internet yo‘q), foydalanuvchini bloklamang — oxirgi saqlangan qiymatdan foydalaning.
- Qo‘shimcha ravishda ilova versiyasini har bir so‘rov sarlavhasida yuboring. Mijoz juda eski bo‘lsa, server
426 Upgrade Requiredkodi bilan javob berishi mumkin.
Android: Google Play In-App Updates
Google Play ikki rejimli In-App Updates API’sini taqdim etadi:
- IMMEDIATE — to‘liq ekranli yangilash oqimi, Play o‘zi yuklab oladi, o‘rnatadi va ilovani qayta ishga tushiradi.
- FLEXIBLE — fonda yuklab olish, foydalanuvchi ishlashda davom etadi; yuklab olish tugagach, qayta ishga tushirishni taklif qilasiz.
val appUpdateManager = AppUpdateManagerFactory.create(context)
appUpdateManager.appUpdateInfo.addOnSuccessListener { info ->
if (info.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
info.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
) {
appUpdateManager.startUpdateFlowForResult(
info,
updateLauncher,
AppUpdateOptions.newBuilder(AppUpdateType.IMMEDIATE).build()
)
}
}
Yangilash ustuvorligini Play Developer API orqali nashr qilishda belgilash mumkin, clientVersionStalenessDays() esa yangi versiya qancha vaqtdan beri mavjudligini ko‘rsatadi. API faqat Google Play’dan o‘rnatilgan ilovalar uchun ishlaydi, shuning uchun o‘z min_supported_version tekshiruvingiz baribir kerak.
iOS: o‘z mantiqingiz
iOS’da In-App Updates’ning ichki o‘xshashi yo‘q. Odatiy yondashuv:
- Joriy versiyani konfiguratsiyangizdagi
min_supported_versionvalatest_versionbilan solishtirish. - O‘z ekraningiz yoki dialogingizni ko‘rsatib, App Store’dagi ilova sahifasini ochish.
- App Store’dagi joriy versiyani iTunes Search API orqali so‘rash mumkin, lekin o‘z konfiguratsiyangiz ishonchliroq: versiya qachon majburiy bo‘lishini o‘zingiz hal qilasiz.
App Store’dagi phased release’ni hisobga oling: yangi versiya foydalanuvchilarga bosqichma-bosqich yetib boradi, lekin qo‘lda darhol yangilash mumkin.
Eski mijozlar uchun API versiyalash
Majburiy yangilash — oxirgi chora. Asosiy himoya — eski versiyalar bilan mos keladigan API:
- Maydonlar qo‘shing, lekin mavjudlarini o‘chirmang va ma’nosini o‘zgartirmang.
- Buzuvchi o‘zgarishlarni API’ning yangi versiyasida (
/v2/...) chiqaring va eskisini undagi mijozlar ulushi maqbul bo‘lguncha saqlang. - Foydalanuvchilarning ilova versiyalari bo‘yicha taqsimotini kuzating — minimal versiyani qachon oshirish qarori shunga asoslanadi.
- Mijoz noma’lum maydonlar va enum qiymatlarini to‘g‘ri qabul qila olishi kerak.
Yumshoq va qattiq yangilash UX’i
| Yumshoq | Qattiq | |
|---|---|---|
| Qachon | Yangi funksiyalar, tuzatishlar | Zaiflik, mos kelmaydigan API, yuridik talablar |
| Ko‘rinishi | Banner yoki yopiladigan dialog | Chetlab o‘tib bo‘lmaydigan to‘liq ekran |
| Chastota | Oqilona, «keyinroq»ni eslab qolgan holda | Yangilanmaguncha har bir ishga tushirishda |
| Matn | Nima yangi va nega yangilash kerak | Nega yangilanishsiz davom etib bo‘lmaydi |
Qattiq yangilashni suiiste’mol qilmang: har bir bloklovchi ekran foydalanuvchilarning bir qismini butunlay yo‘qotish xavfi.