だいたいそれでいいんじゃないの

つれつれなるkixixixixiの技術的なストック。http://reload.co.jp

やはり俺のAdhoc配信はまちがっている。

f:id:kixixixixi:20150402163146p:plain
続の放映前にぎりぎり間に合いました。

旧Testflight配信がサービス終了して一ヶ月ほど。

クライアントさんにリリース前のチェックをしてもらう際などにiOSアプリのテストではTestflightを利用して配信することが多かった。
それが、TestflightがiTunesConnectに統合されて使い勝手が大きく変わってしまった。

違う点

  • AppleIDに紐付いたユーザに配信する仕組みになった
  • 一度iTCにあげてからの配信なのでBundleIDやBuild Ver.などが一意
  • 1つのAppleID(内部ユーザ)は1つのDeveloperAccountに一意に紐づく
  • 内部ユーザは開発者権限以上が必須
  • 内部ユーザ以外には外部ユーザとして配信(AppleIDはいらないが審査が必要)
  • iTCのUploadとともに配信可能
    など。

細かい修正のたびにビルド番号を変更するくらいなら問題ないけども、外部ユーザに配信するときに審査が必要なことは結構きびしい。
1つのAppleID(内部ユーザ)は1つのDeveloperAccountに一意に紐づく
これが自分的には厳しい。
同時並行で複数アカウントの開発案件等があると案件ごとにAppleIDを作らないと自分ではテストできなくなる。
申請と同じ要領ですぐにテスト配信できるのはすごく楽だけど、内部ユーザごとに配布、非配布を決められないのは困る場合がある。

そんなわけでTestFlightから脱却しようと思いました。
そこで選択肢が3つ
- Deploygate
- Crashlytics
- 自前でつくる

とりあえず、Deploygate使ってみました。
サイトのデザインが綺麗だし、使いやすいしとてもいい。
だけど、同時2つアプリのページしか保持できないのか。あまり同時並行で利用できないか。
有料プランにするならありかな。

Crashlyticsの場合は
Crashlyticsのframeworkをアプリに毎回導入するのはすこし抵抗があったのでやめに。

ということは、自前でつくるしかないよなー。

要件としては - ipaをアップする
- ipaの状態を確認できる
- ipaをwebサイト経由でインストールできる
- 配信ユーザを登録させてインストールページの通知を飛ばす

昔やったときは.plistをつかってitunesのurlscheme踏ませれば配信できたからいけるはす!
想定としてはipaをアップしてplistを解析してbundleIDやUDIDなどを取得して自動的にインストールページが生成できれば簡単にできると思っていた。

ちょっと前にでたLaravel5の勉強も兼ねて黙々と作ってみた。
つまるところがいくつかあった。

最近のXcodeではplistを同時に出力する仕組みがなくなっている。

なのでipaを解凍して Info.plistembedded.mobileprovision の解析を自動化するものをつくるしかない。
Info.plistxmlだから簡単だけども、embedded.mobileprovisionって単純なxmlじゃないんだね。あー。

iOS7の仕様から、配信サーバがhttpsでないとだめになった。

SSL証明書が必要とは。。。

http://marchenterprise.net/2014/03/12/post-211/

こちら大変お世話になりました。

そうこうして

https://deplox.reload.co.jp/

なんとかできました。 通知する部分はできていませんが、人力でipaの個別ページを配信すれば大丈夫。 deviceIDとユーザの紐付けやチームの管理ができてないですが、自分の案件で自分が配信するぶんには十分かなと。

意外にも時間がかかってしまいましたが、技術的には難しくないので全然オレオレTestflightをつくってみるのはありかなと思いました。

以上〜