TestFlight でリリースごとにアプリを配布していたらそれに助けられた

TestFlight という、アプリのベータ版などを配布する Apple 純正のサービスがある。

TestFlight - Apple Developer

これのいいところは「リリースするアプリと同じアプリをテストできる」というところ。
実際にユーザが使うアプリと同じもので動作確認ができるし、同じアプリファイルで Apple は審査を行うのでバグがあったら Self Reject もしやすい。

なので私はいつも

  1. iTunesConnect にアプリファイルを提出
  2. TestFlight で配布 & Apple 審査申請
  3. TestFlight で動作確認
  4. Apple 審査完了
  5. リリース

という流れでリリースをするようにしている。
(この流れは fastlane で自動化している fastlane-example/Fastfile, fastlane deliver を使ってコマンド1発で Waiting For Review までもっていく)

助けられた

先日アプリがクラッシュっするバグを出してしまって、そのバグの原因はアプリの過去バージョンに起因するものだった。
クラッシュする原因は以下の2つ。

  1. ver 3.0.0 が初回インストールだったユーザ
  2. ver 1.X.X -> ver 3.X.X に飛び越えてアップデートしたユーザ

今回 TestFlight に助けられたのは 2 のパターンの原因特定 / デバッグのところ。

TestFlight は 90 日過去バージョンをインストールできる

最初はクラッシュする原因が全然わからなかったんだけど、 TestFlight を見てたら過去バージョンがズラ〜っと並んでいて、なんとなく ver 1.X.X のをインストールした後に ver 3.0.1 をインストールしたらクラッシュして原因特定できた。

原因特定できた後も修正確認のために ver 1.X.X をインストールして、 ver 3.1.0 をその後インストールして動作が問題ないか、というテストができた。

もし TestFlight がなかったらデバッグが大変になってて、 ver 1.X.X をインストールするためには Xcode 8.X を持ってきて... というところから始めないといけなくなる。 AppStore からも基本的に過去 ver は DL できないし。

TestFlight で配布していたおかげで過去バージョンからのマイグレーションテストも手軽にできて助かった。