Google Play Developer API - приоритет обновления в приложении не работает - PullRequest
2 голосов
/ 30 апреля 2020

Я пытаюсь установить параметр приоритета обновления в приложении для публикации новой сборки приложения android в Play Store. Согласно этой документации она должна работать:

  1. https://developer.android.com/guide/playcore/in-app-updates
  2. https://developers.google.com/resources/api-libraries/documentation/androidpublisher/v3/java/latest/com/google/api/services/androidpublisher/model/TrackRelease.html

Но на самом деле это не так. Возможно, я делаю что-то не так.

Вот пример:

// creating AndroidPublisher instance in some way
AndroidPublisher androidPublisher = createPublisher(serviceKeyPath);

// creating new edit
AppEdit edit = androidPublisher.edits()
    .insert(APP_PACKAGE, null)
    .execute();
String editId = edit.getId();

// uploading APK
FileContent apkContent = new FileContent(APK_MEDIA_TYPE, new File(apkPath));
Apk apk = androidPublisher.edits()
    .apks()
    .upload(APP_PACKAGE, editId, apkContent)
    .execute();

// preparing release info
List<Long> versionCodes = Collections.singletonList(apk.getVersionCode().longValue());
TrackRelease trackRelease = new TrackRelease()
    .setName(getNewVersionName())
    .setReleaseNotes(getReleaseNotes())
    .setVersionCodes(versionCodes)
    .setStatus("completed")
    .setInAppUpdatePriority(5); // <-- value from 0 to 5
Track track = new Track()
    .setTrack("internal")
    .setReleases(Collections.singletonList(trackRelease));

// submitting new release info to the edit
Track savedTrack = androidPublisher.edits()
    .tracks()
    .update(APP_PACKAGE, editId, "internal", track);

В результате значение поля «updatePriority» должно быть 5. Но Google Play Developer API возвращает NULL:

TrackRelease savedRelease = savedTrack.getReleases().get(0);
System.out.println("Update priority: " + savedRelease.getInAppUpdatePriority());

Вывод:

Update priority: null

Это значение NULL даже после создания нового выпуска:

// publishing 
AppEdit validatedAppEdit = androidPublisher.edits()
    .commit(APP_PACKAGE, editId)
    .execute();

Затем ожидание некоторое время. Новая сборка доступна в Play Store. Сейчас:

// creating new edit, it will contain the state of the latest release
AppEdit edit = androidPublisher.edits()
    .insert(APP_PACKAGE, null)
    .execute();

androidPublisher.edits()
    .tracks()
    .get(APP_PACKAGE, edit.getId(), "internal")
    .execute();
TrackRelease release = track.getReleases().get(0);
int priority = release.getInAppUpdatePriority();
System.out.println("Update priority of the latest release: " + priority);

Вывод:

Update priority of the latest release: null

Также я пытаюсь получить статус доступности обновления с помощью библиотеки Play Core android в приложении Android:

AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context);
appUpdateManager.getAppUpdateInfo()
    .addOnSuccessListener(info -> {
        Log.d(TAG, "Update priority: " + info.updatePriority());
        if (info.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
            && info.updatePriority() > 4
            && info.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
            // starting immediate update flow here
        }
    });

Но на самом деле метод updatePriority () возвращает 0. Ожидаемое значение: 5.

Другие методы работают правильно: updateAvailability () возвращает UpdateAvailability.UPDATE_AVAILABLE, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...