サービスで使用されているクライアントアプリのバージョンをある特定のバージョン以降のみに限定するうまいやり方がないか調べていてどういう実装だったら実現できそうか考えたのでメモしておきます。

何を解決したいか

  • 特定のバージョン以下の場合は強制的にアップデートさせたい
    • 全くアップデートしないユーザーがいるのでアップデートさせたい
    • 新しい仕様や挙動を反映させたい
  • 特定のバージョンだった場合は強制アップデートさせたい
    • 特定のバージョン固有のバグがある時にそのバージョンを使わせたくない
  • 新しいバージョンがリリース済みならアップデートを促したい
    • これはライブラリでありそう
    • Androidなら In app Updates が使えそう
    • iOSにも似たようなAPIがあるのかな?

データ構造

上記を実現するために何かしら情報をアプリ側に伝える必要があります。

ここではJSONファイルを適当な公開ディレクトリに置くこととします。

latest_version については定期的にマーケットのAPIを叩いて更新するか手動でも良いでしょう。

{
  "android": {
    "latest_version": "2.7.0",
    "actions": [
      // 特定のバージョン以下の場合に強制アップデートさせる
      { "version": "< 2.5", "action": "force_update" },
      // 特定のバージョンの場合に強制アップデートさせる
      { "version": "= 2.6.1", "action": "force_update" }
    ]
  },
  "ios": {
    ...
  }
}

アプリ側の処理

上記のファイルをアプリ側から起動時など定期的に取得してユーザーに知らせるとよさそう。