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.appupdateexample"
         }
      }
      
    2. В директории cert замените сертификат release.keystore - сертификатом своего приложения, так же в release.properties выполните настройку параметров key_alias, key_password, store_password. Подпись release.keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемый buildType (пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release).

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

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

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

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

    RuStoreAppUpdateManager ruStoreAppUpdateManager = RuStoreAppUpdateManagerFactory.INSTANCE.create(context);
    

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

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

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

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

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

    ruStoreAppUpdateManager.startUpdateFlow(appUpdateInfo, new 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(AppUpdateType.IMMEDIATE).build() - принудительное обновление
    • AppUpdateOptions.Builder().appUpdateType(AppUpdateType.SILENT).build() - тихое обновление

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

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

    ruStoreAppUpdateManager.completeUpdate(new AppUpdateOptions.Builder().appUpdateType(AppUpdateType.SILENT).build())
         .addOnFailureListener(throwable -> {
             Log.d("TAG", "Throwable: " + throwable);
         });
    
    • Тип обновлений FLEXIBLE - приложение перезапустится.
    • Тип обновлений SILENT - приложение закроется без перезапуска.

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

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

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

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

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

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

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

    Описание

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

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