Я пытаюсь установить параметр приоритета обновления в приложении для публикации новой сборки приложения android в Play Store. Согласно этой документации она должна работать:
- https://developer.android.com/guide/playcore/in-app-updates
- 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, как и ожидалось.