アプリのアップデートを早めに浸透させる為にinAppUpdatesを使ってみましょう。

https://developer.android.com/guide/playcore/in-app-updates

inAppUpdateはFlexibleとImmediateの2つがあります。Flexibleはアップデートの進捗を表示したり細かい制御が可能です。Immediateはただアップデートするだけと考え、概ね差し支えないと思います。ユーザがアップデートのキャンセルが可能な為、どちらの場合も「強制アップデート」はできないです。とりあえずInAppUpdatesをすぐに導入したいだけならImmediateを使うと簡単なので、今回はImmediateで実装します。

InAppUpdatesを実行するActivityが属するモジュールのbuild.gradle.ktsに下記を記述し、SyncProjectWithGradleFilesを実行します。今回は下記のバージョンを使っていますが、バージョン上がる毎に機能が増えたりしているので、該当バージョンと実装方法は確認しましょう。またktxを使う場合と使わない場合でコードが少し異なるので、そこも注意です。

implementation("com.google.android.play:core:1.10.3")
implementation("com.google.android.play:core-ktx:1.8.1")

ActivityにinAppUpdatesを導入する最小のコードは下記になるかと思います。

class MainActivity : AppCompatActivity() {
    companion object {
        const val IN_APP_UPDATE_REQUEST_CODE = 32
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        checkInAppUpdates()
    }
    private fun checkInAppUpdates() {
        val manager = AppUpdateManagerFactory.create(this)
        manager.appUpdateInfo.addOnSuccessListener { info ->
            if (info.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && info.isImmediateUpdateAllowed)
                manager.startUpdateFlowForResult(
                        info, AppUpdateType.IMMEDIATE, this, IN_APP_UPDATE_REQUEST_CODE
                )
        }
    }
}

これをテストする方法はいくつかあると思うのですが、GooglePlayConsoleの内部アプリ共有機能を使ってテストします。「内部テスト」という似た名前の項目があるので間違えずに「内部アプリ共有」を選択し、テスターの管理を済ませておきます。

テスト手順を順番に書くと

1.リリース予定のVersionCodeでBuildVariantをアプリリリース時と同じ署名でaabファイルを作成する(署名は同じでも既にストアに上がっているアプリとは別のアプリとして扱われるので本番のアプリには影響ありません)

2. 1で作成したaabファイルを内部アプリ共有にアップロードする(https://play.google.com/console/internal-app-sharing)
3. 2でアップロードしたアプリを端末にインストールする(画面右下のコピーボタンからURLリンクの共有をすることでインストール可能です

4. VersionCodeをリリース予定のVersionCodeより大きい数値にし、BuildVariantをアプリリリース時と同じ署名でaabファイルを作成する

5. 4で作成したaabファイルを内部アプリ共有にアップロードする

6. 5でアップロードしたaabファイルのリンクを3でインストールした端末と同じ端末に共有しリンクを開く。ただしここではアプリをインストールしないこと。この操作によりVersionCodeが大きいアプリがPlayStoreにアップロードされていることをアプリが認識できるようになります。

7. 3でインストールしたアプリを起動する

8. inAppUpdatesのUIが表示される

この手順でInAppUpdatesを内部アプリ共有で動作確認することが可能です。