自作アプリをネットワーク経由で他人のiPhoneにインストールする方法
MacのXCodeでiOSアプリ(iPhoneアプリ)を作ったので友達にも試してもらいたい!と思った場合、家のMacにUSBなりWiFiでつなげれば友達のiPhoneにインストールできるが、家に来るほどの仲じゃない場合困ってしまうので、どうしたものかと調べたところ、TestFlightなるものがあることを知り使ってみたのでまとめました。
Macで開発したiOS/iPadOSアプリを他人の端末へ暫定配布する(TestFlight版)手順まとめ
このページは、Xcodeで作ったアプリを TestFlight で他人のiPhone/iPadに配布するまでの流れを、実際に詰まったポイント込みでまとめたものである。
前提
- Apple Developer Program 加入済み
- Xcode が入っている(Mac)
- 配布先の人は iPhone/iPad に TestFlightアプリ を入れられる
全体の流れ(ざっくり)
- Apple Developer(Identifiers)で App ID(Bundle ID) を作る
- App Store Connect で アプリ登録(箱を作る)
- Xcodeで 署名設定・アイコン を整える
- Xcodeで Archive → Upload(App Store Connectへ)
- App Store Connect(TestFlight)で コンプライアンス回答
- グループ作成 → 外部テスト提出(審査) → 承認
- 公開リンク(Public Link) をONにしてリンクを配布
1. Bundle ID がプルダウンに出ない場合(最初の詰まりポイント)
App Store Connectの「New App」で Bundle IDが選択肢に出ないときは、 そのBundle IDが Apple DeveloperのIdentifiersに未登録。
対応
- Apple Developer → Certificates, Identifiers & Profiles
- Identifiers → +
- App IDs → App
- Bundle ID は Explicit で登録(例:
jp.co.example.MyApp) com.example.*みたいな Wildcardは不可- 保存 → App Store Connect を更新するとプルダウンに出る
2. App Store Connectでアプリ登録(初回のみ)
- App Store Connect → My Apps → + → New App
- iOSを選択、アプリ名、言語、SKU
- さっき作った Bundle ID を選ぶ
3. Xcode側の設定(必須)
3-1. Bundle Identifier の確認場所
Xcode → 青いプロジェクト → TARGETS(アプリ本体) → Signing & Capabilities
→ Bundle Identifier が App Store Connect のものと一致していること
3-2. Signing設定
- Automatically manage signing:ON
- Team:正しいTeam を選択
3-3. Version / Build(超重要)
TARGETS → General → Identity
- Version:1.0 など
- Build:1 など(アップロードするたびに 必ず増やす)
4. アイコンエラーが出た場合(Validation failed)
典型エラー例:
- Missing required icon file(120×120、152×152が無い)
- CFBundleIconName が無い
対応(最短)
- Assets.xcassets を開く
- + → New App Icon(AppIconを作る)
- AppIcon の枠にPNGを入れる
- まずは 1024×1024のPNG を用意して入れるのがラク。ChatGPTに頼めばアイコン画像はすぐできる。
- TARGETS → General → App Icons and Launch Screen
- App Icons Source が AppIcon になっていること
5. Archive → Upload(Xcode)
- 実行先を Any iOS Device (arm64) などにする(Simulatorだとダメ)
- Product → Archive
- Organizer → Distribute App → App Store Connect → Upload
※「Xcode Cloud用にリモートリポジトリが必要」みたいな案内が出ても、 TestFlight配布には関係ないのでスルーでOK。
6. App Store Connect(TestFlight)で「処理中」→ コンプライアンス対応
Upload直後はビルドが 処理中(Processing) になる。
「コンプライアンスがありません」と出たら
輸出コンプライアンス(暗号化)の回答が未提出。
例:暗号化アルゴリズムの種類の選択
多くの普通のアプリ(HTTPS / OS標準の暗号化APIなど)なら
「標準的な暗号化アルゴリズム」 を選ぶことが多い。
※独自暗号(自作方式)を入れてる場合は該当を選ぶ。
7. 外部テスト(External)が出ない問題
UIの出方で、最初は外部メニューが出ないことがある。
解決例(今回のケース)
- 内部グループを1つ作ったら外部グループ作成メニューが出てきた
8. 外部配布:グループ作成 → 審査 → 承認
外部テストは基本 ベータ審査(TestFlight App Review) が入る。
- TestFlight → 外部(External)側で 外部グループ作成
- グループに ビルドを追加
- 必要なら Test Information を埋める
- 審査に提出 → 承認済みになるのを待つ。半日ぐらい待った。
9. 公開リンク(Public Link)を出す
承認済みになったら、外部グループの画面で:
- Public Link(公開リンク) を ON
- 表示されたURLをコピーして相手に送る
相手側は: - TestFlightアプリを入れる - 送られたリンクを開く - Install
10. 有効期限(90日)について
TestFlightのビルドは 90日で期限切れ。
延長(同じビルドの延命)はできないので、 継続したい場合は 新しいビルドをアップロードする。
- Build番号を上げる → Archive → Upload
- 同じ外部グループに新ビルドを追加
- テスターはアップデートするだけで継続可能