Java で記述された Android アプリのアプリ内更新ダイアログを実装しようとしています。
アップデートが利用可能かどうかを確認するために切り取られたコードは、Android 開発者ページから取得されます。Main アクティビティの onResume() メソッドで呼び出されます。
private void checkForUpdate() {
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);
// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
Log.d(TAG, "AppUpdateInfo: " + appUpdateInfo);
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
// can be changed to AppUpdateType.INTERMEDIATE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
// Request the update.
try {
appUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
appUpdateInfo,
// Or 'AppUpdateType.FLEXIBLE' for flexible updates.
AppUpdateType.IMMEDIATE,
// The current activity making the update request.
this,
// Include a request code to later monitor this update request.
APP_UPDATE_REQUEST_CODE);
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
}
});
}
Google Play Console からアプリの新しいバージョンをリリースします。2 つのクローズド テストトラックがあります。
- 開発トラック -> ユーザー: 開発者、現在のバージョン: 105
- テスター トラック -> ユーザー: テスター、現在のバージョン: 99
AppUpdateInfo を開発者デバイスの Logcat に出力すると、availableVersionCode は 88 になります。同時に、現在のバージョン (105) が Google Play ストアに表示されます。
D/MainActivity: AppUpdateInfo: AppUpdateInfo{packageName=package.app, availableVersionCode=88, updateAvailability=1, installStatus=0, clientVersionStalenessDays=null, updatePriority=0, bytesDownloaded=0, totalBytesToDownload=0, additionalSpaceRequired=0, assetPackStorageSize=0, immediateUpdateIntent=null、flexibleUpdateIntent=null、immediateDestructiveUpdateIntent=null、flexibleDestructiveUpdateIntent=null}
バージョンが 1 つ増えてから、過去にバージョン 88 がありましたが、現在はバージョン 105 と 99 のみが有効です。
今、なぜ AppUpdateInfo が最新バージョン 105 を受信しないのか疑問に思っています。前述のように、更新は Google Play コンソールを通じて行われます。私の推測では、アプリ内更新機能は、Google Play Developer APIを介してのみコミットされた更新情報を受け取ります。
誰かが同じ問題を経験していて、私の推測を確認できますか? どんな助けでも大歓迎です。