Primer vnedreniia RuStore SDK obnovleniia prilozheniia
Trebuemye usloviia
Dlia korrektnoi raboty SDK neobkhodimo sobliudat' sleduiushchie usloviia:
Trebovaniia dlia pol'zovatelia:
-
Na ustroistve pol'zovatelia ustanovleno prilozhenie RuStore.
-
Versiia RuStoreApp na ustroistve pol'zovatelia aktual'naia.
-
Pol'zovatel' avtorizovan v prilozhenii RuStore.
-
Dlia prilozheniia RuStore dolzhna byt' razreshena ustanovka iz neizvestnykh istochnikov.
Trebovaniia dlia razrabotchika/prilozheniia:
-
Android 6 (SDK 23)
-
ApplicationId, ukazannyi v build.gradle, sovpadaet s applicationId apk-faila, kotoryi vy publikovali v konsol' RuStore:
-
Podpis' keystore dolzhna sovpadat' s podpis'iu, kotoroi bylo podpisano prilozhenie, opublikovannoe v konsol' RuStore. Ubedites', chto ispol'zuemyi buildType (pr. debug) ispol'zuet takuiu zhe podpis', chto i opublikovannoe prilozhenie (pr. release).
Ispol'zovanie metodov
Snachala nuzhno proverit' dostupnost' obnovleniia dlia vashego prilozheniia:
ruStoreAppUpdateManager
.getAppUpdateInfo()
.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability == UpdateAvailability.UPDATE_AVAILABLE) {
// Obnovlenie dostupno
}
}
.addOnFailureListener { throwable ->
Log.e(TAG, "getAppUpdateInfo error", throwable)
}
Esli obnovlenie dostupno, mozhno zapuskat' sleduiushchii metod:
ruStoreAppUpdateManager
.startUpdateFlow(
// Ob'ekt AppUpdateInfo, poluchennyi v metode `getAppUpdateInfo()`
appUpdateInfo,
// Parametry obnovleniia (v tekushchei versii SDK ispol'zuiutsia parametry po umolchaniiu)
AppUpdateOptions.Builder().build()
)
.addOnSuccessListener { resultCode ->
if (resultCode == Activity.RESULT_CANCELED) {
// Pol'zovatel' otkazalsia ot skachivaniia
}
}
.addOnFailureListener { throwable ->
Log.e(TAG, "startUpdateFlow error", throwable)
}
Dannyi metod otobrazhaet pol'zovateliu dialog s podtverzhdeniem skachivaniia. Esli pol'zovatel' soglashaetsia, to metod vozvrashchaet Activity.RESULT_OK, inache Activity.RESULT_CANCELED.
Obratite vnimanie - kazhdyi ob'ekt AppUpdateInfo mozhet ispol'zovat' tol'ko odin raz. Dlia povtornogo vyzova metoda nuzhno zaprosit' ego snova.
Dlia otslezhivaniia statusa skachivaniia obnovleniia mozhno zaregistrirovat' slushatel':
val installStateUpdateListener = InstallStateUpdateListener { installState ->
when (installState.installStatus) {
InstallStatus.DOWNLOADED -> {
// Skachivanie zaversheno, mozhno zapuskat' ustanovku obnovleniia
}
InstallStatus.DOWNLOADING -> {
val totalBytes = installState.totalBytesToDownload
val bytesDownloaded = installState.bytesDownloaded
// Skachivanie v protsesse. Mozhno, naprimer, otobrazit' ProgressBar
}
InstallStatus.FAILED -> {
// V protsesse skachivaniia voznikla oshibka
}
}
}
// Pered tem kak nachinat' skachivanie obnovleniia, dobav'te slushatel'
ruStoreAppUpdateManager.registerListener(installStateUpdateListener)
// Kogda otslezhivanie statusa bol'she ne nuzhno - udalite slushatel'
ruStoreAppUpdateManager.unregisterListener(installStateUpdateListener)
Posle togo kak obnovlenie skachano, mozhno zapuskat' ustanovku. Posle zapuska ustanovki prilozhenie avtomaticheski zakroetsia.
ruStoreAppUpdateManager.completeUpdate()
Est' voprosy
Esli poiavilis' voprosy po integratsii SDK obnovlenii, obratites' po etoi ssylke: https://help.rustore.ru/rustore/trouble/user/help_user_email ili napishite na pochtu support@rustore.ru.