Android In App Updates

Şahin Karadeniz
3 min readNov 1, 2023

--

Android uygulamalarımıza yeni geliştirmeler ekledikten veya hataları düzelttikten sonra bu güncellemeleri Google Play Store’a gönderiyoruz. Birçok kullanıcı Wi-Fi bağlantısında arka planda otomatik güncellemeleri kabul etse de büyük bir kitle bu güncellemeleri manuel olarak indirmeyi tercih ediyor. Güncellemeleri indirip yüklemek kullanıcının kendi inisiyatifindedir.

Uygulama güncellemeleri bazen kritik olabilir. Bir güvenlik açığı veya önemli bir hata olabilir. Bu tür durumlarda güncelleme yapma işlemini kullanıcılara hatırlatmak veya zorunlu kılmak isteyebiliriz. Bu yazıda, bu işlemi gerçekleştirmenin en etkili yollarından biri olan “In App Updates” konusuna odaklanacağız.

In App Updates Nedir ?

In app Updates, kullanıcıların uygulamanızı güncellemelerini teşvik etmenin etkili bir yoludur. Bir güncelleme yayınladığınızda kullanıcıları bundan haberdar edebilir isteğe bağlı veya zorunlu olarak iki farklı şekilde uygulama içerisinden güncelleme yapabilirsiniz.

Flexible updates

Güncellemeyi yapmak için kullanıcıdan izin ister ve kullanıcı onayladığında indirme işlemini arka planda gerçekleştirir, kullanıcı deneyimini kesintiye uğratmaz ve tamamlandığında güncellemeyi uygular. Bu yöntemi genellikle kritik olmayan güncellemeler için kullanabilirsiniz.

Esnek Güncelleme

Immediate updates

Bu tür güncellemeler tam ekran olarak gelir ve kullanıcının uygulamayı kullanmaya devam edebilmesi için güncellemeyi yapması ve uygulamayı yeniden başlatması gerekmektedir. Bu yöntem, kritik öneme sahip güncellemeler için önerilir. Kullanıcı bu işlem sırasında uygulamayı kullanmaya devam edemez.

Zorunlu güncellemele

Nasıl kullanabiliriz ?

İlk olarak, uygulamanızın Gradle dosyasına aşağıdaki bağımlılıkları eklememiz gerekmektedir:

dependencies {
implementation 'com.google.android.play:app-update:2.0.1'
implementation 'com.google.android.play:app-update-ktx:2.0.1'
}

Güncelleme işlemlerini kontrol etmek için bir activity örneği oluşturuyoruz:


class MainActivity : Activity() {
private lateinit var appUpdateManager: AppUpdateManager
private val MY_REQUEST_CODE = 1001

override fun onResume() {
super.onResume()

// AppUpdateManager'ı oluşturun.
appUpdateManager = AppUpdateManagerFactory.create(this)

// Güncelleme işlemi başlatıldığında kullanıcıya geri bildirim vermek için bir listener ekleyin.
val listener = InstallStateUpdatedListener { state ->
if (state.installStatus() == InstallStatus.DOWNLOADED) {
// Güncelleme indirildiğinde kullanıcıyı bilgilendirin ve güncellemeyi uygulamak için uygun bir zamanı işaretleyin.
appUpdateManager.completeUpdate()
}
}

appUpdateManager.registerListener(listener)

// Zorunlu güncellemeleri kontrol edin.
val appUpdateInfoTask = appUpdateManager.appUpdateInfo
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
// Bu örnek bir imediate güncelleme uygular flexible bir güncelleme uygulamak için
// AppUpdateType.IMMEDIATE yerine AppUpdateType.FLEXIBLE'ı geçirin
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
// Zorunlu güncelleme mevcutsa ve uygunsa, güncellemeyi başlatın.
try {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.IMMEDIATE,
this,
MY_REQUEST_CODE
)
} catch (e: SendIntentException) {
e.printStackTrace()
}
}
}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == MY_REQUEST_CODE) {
if (resultCode != RESULT_OK) {
// Zorunlu güncelleme işlemi tamamlanmadı veya iptal edildi.
// Uygulamayı kapatın veya başka bir aksiyon alın.
}
}
}

override fun onDestroy() {
super.onDestroy()
appUpdateManager.unregisterListener(listener)
}
}

Güncelleme eksiklerini kontrol etmek

Bir güncelleme olup olmadığını kontrol etmeye ek olarak, kullanıcıya Play Store’dan en son güncelleme bildiriminin üzerinden ne kadar süre geçtiğini de kontrol edebilirsiniz. Bu bilgiler, esnek güncelleme mi yoksa anında güncelleme mi başlatmanız gerektiğine karar vermenize yardımcı olabilir. Örneğin, kullanıcıyı esnek bir güncellemeyle bilgilendirmeden önce birkaç gün, bundan sonra da hemen güncelleme istemeden önce birkaç gün bekleyebilirsiniz.

Güncellemenin Play Store’da kullanıma sunulmasından bu yana geçen gün sayısını kontrol etmek için clientVersionStalenessDays() aracını kullanın:

val appUpdateManager = AppUpdateManagerFactory.create(context)

val appUpdateInfoTask = appUpdateManager.appUpdateInfo

appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& (appUpdateInfo.clientVersionStalenessDays() ?: -1) >= DAYS_FOR_FLEXIBLE_UPDATE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
// Güncellemeyi istemek için isteği gönderin.
}
}

Öğrenirken sizlerle paylaştığım bu metinde hatalı gördüğünüz veya eklemek istediğiniz bilgiler varsa benimle iletişime geçin.

--

--