iOSアプリの各種配信方法とIP制限があるCustom Appを審査に通す方法

# 追記2

- [App Store Reviewガイドライン](https://developer.apple.com/jp/app-store/review/guidelines/)の[3.2 その他のビジネスモデルの問題](https://developer.apple.com/jp/app-store/review/guidelines/#other-business-model-issues)を指摘されてメタデータリジェクトされました。
- Apple Business Managerを使用する場合にはApp Storeの配布先もApple Business Managerが利用できる国に限定する必要があるようで、日本のみに限定したら無事審査は通過しました。

![スクリーンショット 2022-09-26 17.45.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16700/e50c466d-c596-729e-2e30-9f0bddee1082.png)

# 追記

- 当初はIP制限付きのまま動画のみの説明で審査に通過しましたが、その後、アップデートの審査時にリジェクトされました😱
- Appleからの返信は以下で、IPの許可とデモアカウントを提供 or デモモードを実装する必要がありそうです。

```
We understand your app is restricted to a specific network. However, it still would be appropriate to provide us any way to access to your app.

In order for us to continue the review, we need to have a way to verify all app features and functionality. Typically this is done by providing a demo account that has access to all features and functionality in your app. It is also acceptable to include a demonstration mode that exhibits your app’s full features and functionality. Note that providing a demo video showing your app in use is not enough for us to continue the review.
```

- 上記を踏まえると[海外からのアクセス制限をかけている状態でiOSアプリの申請をする方法](https://qiita.com/buntafujikawa/items/1df1f293e8efa6c0b7f4)にも記載されているように、 `17.0.0.0/8` のIPを許可するようにallowlistに追加するのが正攻法そうです。

# スライド版

<script async class="speakerdeck-embed" data-id="4398bab9fe5b4bcfbc742a69cb109040" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>

# 結論

- IP制限ありのままかつ、Appleのレビュアーにログイン情報を提供しなくても審査は通る。
- アプリ申請ページの `App Reviewに関する情報` にアプリの説明と添付ファイルにアプリの動作がわかる動画を添付する。
    - 注意点として、ログインやカメラ等の許可アラートを必ず含める必要がある。

# 前提知識

## Appの配信方法

| 配信方法 | 公開範囲 | Appleの審査 | 説明 |
| --- | --- | --- | --- |
| App Storeで配信 | App Store | 必要 | 通常のアプリ申請によるApp Storeへ公開される方法 |
| Custom Appで非公開で配信 | Apple Business Manager または Apple School Manager | 必要 | App Storeに非公開でアプリ申請し、ABMまたはASM経由で配信される方法 |
| App Storeに非表示で配信<br>（[Unlisted App](https://developer.apple.com/jp/support/unlisted-app-distribution/)）| URLからApp Storeのアプリ個別ページにアクセス | 必要 | 2022年1月31日から開始された新しい配信方法で、App Storeのカテゴリ、おすすめ、ランキング、検索結果には非表示になる状態でApp Store経由で配信される方法 |
| AdHoc配信 | インストールページを用意または配信サービスを利用 | **不要** | インストール可能な端末がiPhone/iPadなど端末ごとに100台の制限がある |
| InHouse配信 | インストールページを用意または配信サービスを利用 | **不要** | ADEP契約が必要かつ、アプリをインストール可能なのはその会社と雇用関係がある人に限定するという規約がある |

## Custom Appとは

- App Storeに公開しないでアプリを配信する方法。
- Custom AppはInHouseの代替の配信方法で、今までは非公開かつ端末制限がない配布方法はInHouseしかなかったが、最近はInHouseを目的とした新規のApple Developer Enterprise Program（ADEP）の契約を進めるとCustom Appの案内がされてしまいADEP契約が通らなくなっている。
    - ただし、InHouseではアプリのアップデートはユーザが行う必要があったが、Apple Business Manager（& Mobile Device Management）で端末を制御することによって、管理者側がアプリを強制アップデートさせることも可能になり、審査が必要という点を除いてメリットも多い。

**App Store Connectの配信設定**

![スクリーンショット 2022-06-25 14.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16700/caa1f158-8cd8-f102-bc66-ebb358203ea2.png)

# Custom Appの審査

## 申請したアプリの要件

- InHouseで配信できない子会社に対してAdHoc以外の方法で配信したい。
- 社内アプリのためIP制限があり、社員はVPNに繋いだ状態でアプリを使用している。

## アプリ審査時にやったこと

- `App Reviewに関する情報` に以下を記載。
     - 会社概要（これは必須じゃないかも）
     - IP制限がある旨と、レビュアーのIPを提供していただければそれを許可するまたは、VPN環境を提供できると伝える。
         - ログイン情報はIP制限を突破できないと提供しても意味ないため、最初から提供しなかった。
     - アプリの主要機能と動画を添付
- 説明が難しい部分があったため会社概要とアプリの主要機能説明は英語ではなく日本語で記載。

## 2回Meta dataリジェクトされた

**1回目のMeta dataリジェクト**

- アプリの機能説明の動画にログインが含まれていなかった。

**2回目のMeta dataリジェクト**

- カメラで撮影する部分で初回アクセス時に表示される許可アラートが含まれていなかった。

# まとめ

- 冒頭の結論の通り、アプリの挙動がわかる動画さえ用意すればIP制限ありの状態かつ、ログイン情報すら渡さなくても審査は通過する。

# 参考

- [App の配信方法の設定](https://help.apple.com/app-store-connect/#/dev275598f16)
- [非表示App(Unlisted App)とは何か](https://www.micss.biz/2022/02/07/5041/)