非表示 App の配信 (Unlisted app distribution) を実際に利用してみた

## 非表示 App の配信 (Unlisted app distribution) ってなに？

2022 年 1 月頃に導入された AppStore での新しいアプリ配信方式。

https://developer.apple.com/jp/support/unlisted-app-distribution/

大まかな特徴としては、

- 通常のストア公開アプリと同じ
    - AppStore 用のビルド
    - AppStoreConnect 上のストアページのメタデータ類の整備が必要
    - 公開前の審査あり
    - インストール制限なし
- AppStore 上において通常の検索結果、その他リストには表示されない
- 別途用意される URL リンクを踏むことで、 AppStore 上でストアページの表示とアプリインストールが可能

といった点が挙げられます。

この「非表示 App の配信」を実際に設定する機会があったため、その際の知見をまとめてみました。

## Apple 側への申請対応
### 1. アプリを通常審査に提出

[Apple の公式サポートページ](https://developer.apple.com/jp/support/unlisted-app-distribution/)で記載されている通り、まずはアプリを審査に提出する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178830/0dd55299-8a93-3d28-abd6-509c28d44987.png)

誤って非表示 App の配信申請を先に出してしまった (以前確認した時はここまで丁寧な説明はされていなかったはず。。) のですが、この場合は普通に怒られます。

>提出の際は、非表示で配信するAppである旨を「審査メモ」欄に入力してください。

とあるように、アプリ審査自体が非表示 App の配信申請結果を待つ必要があるため、審査時のメモ欄への記載は必須そうです。

### 2. 非表示 App の配信を申請

[リクエストフォーム](https://developer.apple.com/contact/request/unlisted-app/)より、非表示 App の配信申請を実施します。

申請作業については [Account Holder の Role](https://developer.apple.com/jp/support/roles/) というかなり強い権限が要求されるため、事前に諸々の調整等進めておくことをおすすめします。

リクエストフォーム中には、アプリのメタデータ記述に加えて、非表示 App の配信が妥当かどうかを判断するためと思われる質問項目がいくつか存在します。

**特に、**

>Why do you prefer unlisted app distribution over private distribution to specific organizations via Apple Business Manager or Apple School Manager?

**といった Apple Business Manager (を利用した MDM 管理端末への配信) で代替できないのはなぜか？ といった答えづらい内容もあるため、非表示 App の配信申請についてはきちんとした理由づけが要求されます。**

質問項目自体は適宜アップデートが掛かっている （実際に申請した 2022 年 6 月頃と 2022 年 8 月現在で項目が増えている） ようなので、実際に申請を出す場合にはリクエストフォームを表示して最新の質問項目を確認してください。

### 3. 非表示 App の配信申請通過

リクエストフォームから申請してしばらく待つと、結果が Account Holder のメールにやってきます。 (N = 1 ですが、 2 〜 3 日程度かかりました)

無事に申請が通過すると、 AppStoreConnect 上の該当アプリの「App の配信方法」が変化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178830/da7088b8-c477-aec5-5b4e-40ae33cc3c84.png)

### 4. アプリ審査の通過を待つ (場合によっては、再審査を要求)

非表示 App の配信申請が通過しただけではまだ不完全で、アプリ審査のほうも通過する必要があります。

レビュワー次第だとは思われるのですが、非表示 App の配信申請の結果を待って自動的にレビューを停止、再開してくれる場合もあるらしく、今回は特に何もせずにアプリ審査通過となりました。
(リジェクトされる場合もあるらしく、その場合は Resolution Center 経由で連絡を取るよう非表示 App の配信申請通過メールに説明が記載されていました)

### 5. 完了

アプリ審査が通過したら、あとは通常のストア公開アプリと同様に公開ボタンを押して完了です。

AppStore での検索には引っかからないため、上述の App の配信方法に記載されている URL を読み込んでストアページを表示させて公開を確認する必要があります。

一度、非表示 App の配信申請を実施した場合、以降のアップデート時には申請不要です。

## 配信時 / 配信後の挙動
### インストールリンク

おそらく最も気になるところだと思うのですが、インストーリリンクのフォーマットについては、

```
https://apps.apple.com/app/id${アプリのApple ID}
```

という通常のストアページの URL と変わりませんでした。

Slug に UUID を利用した推測不可能な URL ではなく、適当にアプリの Apple ID をインクリメントするだけで見つけられてしまうため、非表示 App の配信申請時に出てくる注意書きである

>• Because the app will be accessible by anyone with the link, unlisted distribution is not private. For private app distribution, I acknowledge Apple's recommendation to offer a custom app on Apple Business Manager or Apple School Manager.
>• Unlisted distribution is not a security feature. I acknowledge Apple’s recommendation to take appropriate steps, such as requiring username and password authentication to secure data, and treating the app as if it were publicly available on the App Store.

をよく認識しておく必要があります。

### アプリのアップデート

非表示 App をアップデートした際に、インストール済み端末に対して自動でアップデート対象になるのか、都度リンクを読み込んでアップデート確認が必要になるのかといった点も気になったのですが、結論としては前者でした。

インストール済みの場合は、アプリアップデートに関しては AppStore の通常動作が維持されるようなので、自動アップデート設定等もそのまま利用できます。