README.MD

    Пример внедрения SDK обновлений RuStore

    Документация SDK обновления приложения

    Оглавление

    Условия работы SDK обновлений

    Для корректной работы SDK необходимо соблюдать следующие условия:

    Требования для пользователя:

    • ОС Android версии 7.0 или выше.

    • На устройстве пользователя установлена актуальная версия RuStore.

    • Пользователь авторизован в RuStore.

    • Приложение должно быть опубликовано в RuStore.

    • Приложению RuStore разрешена установка приложений

    Требования для разработчика/приложения:

    • ApplicationId, указанный в build.gradle, совпадает с applicationId apk-файла, который вы публиковали в консоль RuStore.

    • Подпись keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемый buildType (пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release).

    Подготовка требуемых параметров

    1. applicationId - из приложения, которое вы публиковали в консоль RuStore, находится в файле build.gradle вашего проекта

      android {
          defaultConfig {
              applicationId = "ru.rustore.sdk.appupdateexample"
          }
      }
      
    2. release.keystore - подпись, которой было подписано приложение, опубликованное в консоль RuStore.

    3. release.properties - в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов

    Настройка примера приложения

    1. Замените applicationId, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:

      android {
         defaultConfig {
             applicationId = "ru.rustore.sdk.reviewexample"
         }
      }
      
    2. В директории cert замените сертификат release.keystore - сертификатом своего приложения, так же в release.properties выполните настройку параметров key_alias, key_password, store_password. Подпись release.keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемый buildType (пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release).

    3. Запустите проект и проверьте работу приложения

    Сценарий использования

    Создание менеджера обновлений

    Перед вызовом методов библиотеки необходимо создать менеджер обновлений.

    val ruStoreAppUpdateManager = RuStoreAppUpdateManagerFactory.create(context)
    

    Проверка доступности обновления

    Сначала нужно проверить доступность обновления для вашего приложения:

    ruStoreAppUpdateManager
        .getAppUpdateInfo()
        .addOnSuccessListener { appUpdateInfo ->
            if (appUpdateInfo.updateAvailability == UpdateAvailability.UPDATE_AVAILABLE) {
                // Обновление доступно
            }
        }
        .addOnFailureListener { throwable ->
            Log.e(TAG, "getAppUpdateInfo error", throwable)
        }
    

    Запуск скачивания обновления

    Если обновление доступно, можно запускать метод startUpdateFlow:

    ruStoreAppUpdateManager
        .startUpdateFlow(
            // Объект AppUpdateInfo, полученный в методе `getAppUpdateInfo()`
            appUpdateInfo, 
            // Параметры обновления (используем отложенное обновление)
            AppUpdateOptions.Builder().build()
        )
        .addOnSuccessListener { resultCode ->
            if (resultCode == Activity.RESULT_CANCELED) {
                // Пользователь отказался от скачивания
            }
        }
        .addOnFailureListener { throwable ->
            Log.e(TAG, "startUpdateFlow error", throwable)
        }
    

    Данный метод отображает пользователю диалог с подтверждением скачивания. Если пользователь соглашается, то метод возвращает Activity.RESULT_OK, иначе Activity.RESULT_CANCELED. Обратите внимание - каждый объект AppUpdateInfo может использовать только один раз. Для повторного вызова метода нужно запросить его снова.

    В startUpdateFlow можно передать параметр обновления, на текущий момент их 3:

    • AppUpdateOptions.Builder().build() - отложенное обновление(по умолчанию)
    • AppUpdateOptions.Builder().appUpdateType(IMMEDIATE).build() - принудительное обновление
    • AppUpdateOptions.Builder().appUpdateType(SILENT).build() - тихое обновление

    Установка обновления

    После того как обновление скачано, можно запускать установку. Для запуска установки обновления вызовите метод completeUpdate(appUpdateOptions: AppUpdateOptions). В метод можно передавать только 2 типа завершения установки FLEXIBLE и SILENT, Отложенное и тихое обновление соответственно.

    ruStoreAppUpdateManager.completeUpdate(AppUpdateType.FLEXIBLE)
         .addOnFailureListener { throwable ->
              Log.e(TAG, "completeUpdate error", throwable)
         }
    
    • Тип обновлений FLEXIBLE - приложение перезапустится.
    • Тип обновлений SILENT - приложение закроется без перезапуска.

    Использование слушателя (listener)

    Для отслеживания статуса скачивания обновления можно зарегистрировать слушатель:

    val installStateUpdateListener = InstallStateUpdateListener { installState ->
        when (installState.installStatus) {
            InstallStatus.DOWNLOADED -> {
                // Скачивание завершено, можно запускать установку обновления
            }
            InstallStatus.DOWNLOADING -> {
                val totalBytes = installState.totalBytesToDownload
                val bytesDownloaded = installState.bytesDownloaded
                
                // Скачивание в процессе. Можно, например, отобразить ProgressBar
            }
            InstallStatus.FAILED -> {
                // В процессе скачивания возникла ошибка
            }
        }
    }
    
    // Перед тем как начинать скачивание обновления, добавьте слушатель
    ruStoreAppUpdateManager.registerListener(installStateUpdateListener)
    
    // Когда отслеживание статуса больше не нужно - удалите слушатель
    ruStoreAppUpdateManager.unregisterListener(installStateUpdateListener)
    

    Условия распространения

    Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.txt

    Техническая поддержка

    Если появились вопросы по интеграции SDK обновлений, обратитесь по ссылке.

    Описание

    Пример внедрения RuStore SDK обновления приложения

    Конвейеры
    0 успешных
    0 с ошибкой