Asosiy kontentga o‘tish
Innovialabs

Foydalanuvchilarni ilovani yangilashga qanday majburlash mumkin

Amaliyot3 daq

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:

  1. Ishga tushirishda versiyani tekshirish. Ilova backend yoki remote config’dan ikki qiymat oladi: min_supported_version va latest_version.
  2. 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.0 2.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 Required kodi 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_version va latest_version bilan 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

YumshoqQattiq
QachonYangi funksiyalar, tuzatishlarZaiflik, mos kelmaydigan API, yuridik talablar
Ko‘rinishiBanner yoki yopiladigan dialogChetlab o‘tib bo‘lmaydigan to‘liq ekran
ChastotaOqilona, «keyinroq»ni eslab qolgan holdaYangilanmaguncha har bir ishga tushirishda
MatnNima yangi va nega yangilash kerakNega yangilanishsiz davom etib bo‘lmaydi

Qattiq yangilashni suiiste’mol qilmang: har bir bloklovchi ekran foydalanuvchilarning bir qismini butunlay yo‘qotish xavfi.

Ko‘p beriladigan savollar

To‘g‘ridan-to‘g‘ri yo‘q. Faqat eski API’ni qo‘llab-quvvatlash yoki eski versiya shundayligicha ko‘rsatadigan xatoni qaytarish qoladi. Shuning uchun tekshiruv mexanizmini iloji boricha erta qo‘shish kerak.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.