しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Xamarin.iOS で作ったアプリに TestFlight SDK を組み込む方法

f:id:shiba-yan:20140112185756p:plain

TestFlight » Beta Testing On The Fly

最近は Xamarin を使って iOS 向けアプリを書いていたりするんですが、テスター向けにアプリを配布するのが非常にめんどくさかったので、今回は TestFlight を使って配布することにしました。

普通に OTA でアプリを配布できるのが便利なのですが、用意されている SDK を組み込むとクラッシュレポートとか、セッション情報を見れたりするみたいなので組み込んでみます。

TestFlight » Beta Testing On The Fly

ちょっと調べてみた感じでは TestFlight SDK の iOS 向けバインディングは GitHub にて公開されているみたいですが、バイナリ自体は配布対象となっていないみたいでした。なので、ソースをダウンロードして自分でビルドすることにしました。

mono/monotouch-bindings · GitHub

MonoTouch (Xamarin.iOS) 向けのバインディングプロジェクトが沢山用意されています。とりあえずこのリポジトリを clone するか、Zip でダウンロードするなどして、ローカルに持ってきます。

ビルドするためには TestFlight SDK の 2.0.2 が必要になるみたいですが、現在の最新版は 2.1.3 なのでそれをダウンロードして、GitHub からダウンロードしてきたソースの中に TestFlight というディレクトリがあるので、さらにその中の binding ディレクトリに保存します。

f:id:shiba-yan:20140112190230p:plain

ちなみにファイル名は 2.0.2 と変更しないと make で失敗するので変更してあります。

後は binding ディレクトリまでターミナルで移動して、make コマンドを実行するだけです。

f:id:shiba-yan:20140112190442p:plain

これで TestFlight.dll がビルドされたので、後は Xamarin Studio でプロジェクトの参照に追加するだけです。ネイティブなバイナリ自体が DLL に埋め込まれているみたいなので、単体ファイルで問題ないみたいですね。

参照を追加したら、アプリの AppDelegate 内に TestFlight 開始用のコードを追加するだけで完了です。

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
	TestFlight.TakeOff("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
}

そして最後に Xamarin Studio を使って TestFlight へ Ad-hoc ビルドされたバイナリをアップロードします。これは公式のドキュメントが詳しいので、そっちを参照してください。

TestFlight Support | Xamarin

ちなみに TestFlight へのアップロードが完了すると、ダッシュボードから組み込まれている SDK のバージョンの確認が出来ます。

f:id:shiba-yan:20140112191542p:plain

ここでインストール数やクラッシュ回数も分かるので非常に便利ですね。

上手く設定が完了していると、TestFlight SDK を組み込んだアプリをインストールして、起動が行われたかといった情報が見れると思います。

f:id:shiba-yan:20140112191139p:plain

今は UDID が取れなくなっているので Anonymous なユーザーとして扱われています。クラッシュした場合は別にクラッシュレポートのページがあるので、そちらから確認できるはずです。

テスターがどのバージョンをインストールして、どのぐらいの時間実行しているかなど簡単に見れるので、バグの発見に役に立ちそうです。