5度目の投稿です。社会人になって初めての冬が訪れようとしています。
最近ほんとに寒くなってきたので家から出たくありません。ので、引きこもって、いっぱい記事書こうね。
本題です。
皆さんはアプリのバージョンアップ時、ちゃんとアップデートのテストをしていますでしょうか?当たり前じゃん、ていう方、ちゃんと正しい方法で行えていますでしょうか?
自分はiOSアプリの開発をやり始めた当初は、
古いバージョンのアプリが入ったデバイスを用意 -> xcodeから実機でrun
で、アップデートと同じ挙動を再現できると思っていました。
しかし、appleのデベロッパーサイトには、
Xcodeのアプリインストールプロセスは開発のために最適化されていますが、iTunesやApp Storeのアプリケーションのインストール方法とは少し異なります。
とあります。
具体的には、
- .appバンドル内に、App Storeのアップデート後には存在しないはずの"frankenbuild"が作成される。
- アップグレードに時間がかかりすぎると発生するはずの"watchdog crashes"が隠されてしまう。
などの問題が起こりうるとのこと。(frankenbuild...?watchdog crashes...?)
とにかく、xcodeからのインストールによるアップデートの再現は、テストのやり方としては完璧ではないらしい。。
ということで今回は、正しいアプリアップデートのテストのやり方についてのお話です。(内部テスト向けのお話です)
古いやり方(前置き)
昔のappleのデベロッパーサイトにはiTunesを利用したアップデートのやり方が記載されています。しかし、最新バージョンのiTunesではこの方法は使用することができなくなっています。
1. ビルドをアーカイブ
xcodeでプロジェクトを開き、メニューからProduct -> Archive
と選択。アーカイブが作成され、Organizerウィンドウが開きます。
2. ipaファイルの作成
Organizerウィンドウで先ほど作成したアーカイブを選択し、Distribute App
を押します。
"Ad Hoc"を選択し"Next" 、その後適切な項目入力して"Next"、最後に"Export"でipaファイルが作成されます。
3.iTunesを使って実機にインストール
先ほどexportした.ipaファイルをダブルクリックするとiTunesで開かれます。
<- 最新のiTunes(12.8)では.ipaファイルを開くことはできません!
iTunes12.7からAppの管理方法が変わり、iTunes上でアプリの管理ができなくなりました。アプリの管理については全て、iOSデバイス上で完結させる仕組みに変更されたのです。ので、現在、以上の方法でのアップデートのテストはできなくなりました。
今のやり方
TestFlightを使いましょう。
古いバージョンアプリが入っている端末で、TestFlightによるインストールを行うことでアップデートと同じ挙動を再現できます。
以下具体的なやり方です。
(前提)
- AppStoreConnectにビルドをアップロード済みであること
- デベロッパーサイトの[Certificates, Identifiers & Profiles]で、検証端末のUDIDが登録済みであること。
1. AppStoreConnectでテスターを登録&アプリ配布
AppStoreConnectにログインします。マイApp -> テストを行いたいアプリを選択 -> TestFlightタブ -> AppStoreConnectユーザ
を選択します。
[AppStoreConnectユーザを追加]ウィンドウが表示されます。AppStoreConnectユーザがリストで表示される(初めはAppStoreConnectにログインしているユーザのみが表示されているはず)ので、適当なテスターを選択します。ここで選択したテスターのメールアドレス宛にテストアプリが配布されることになります。
適当なユーザが登録されていない場合は、ウィンドウ内にある「ユーザと役割」から該当テスターを登録してください。
テスター選択後、追加ボタンを押します。これでテスターの登録が完了です。
この段階で、自動的にテストアプリがメールで対象のテスターのメールアドレス宛に配布されているはずです。
2. 検証端末でアップデートテスト
検証端末に「TestFlight」アプリをAppStoreからインストールしておきましょう。また、アップデートのテストを行いたいアプリの古いバージョンをインストールしておきましょう。
さっき登録したテスターのメールアドレス宛にテストアプリが配布されているはずですので、検証端末でそのメールを開きます。(検証端末内のメールアプリでメール受け取れるようにしてると楽です)。メール内の「View in TestFlight」を押すとTestFlightアプリが起動し、アプリをインストールできるようになります。
「Install」を押して、アップデートのテストを行いましょう!
結
DeployGateやTestFairyなどでもアップデートと同じ挙動させることは可能ですが、そこには触れませんでした。
アップデートの検証の仕方をGoogole検索すると昔のappleのデベロッパーサイトで紹介されているやり方が今でも出てくるので、それに騙される人が少しでも減ってくれれば、というのが今回の記事の主旨となっております笑
少しでも誰かのお役に立てれば幸いです。