🍎

iOS 非表示Appの配信について

2024/12/02に公開

iOS 非表示Appの配信について

本記事は、Sun* Advent Calendar 2024 の 2 日目の記事です。

はじめに

はじめまして、Sun Asterisk(以下 Sun*)でモバイルアプリエンジニアをやっている池野です。
普段はテックリードとして、iOS/AndroidネイティブやFlutterのプロジェクトに参画しています。
今回はプロジェクトで得た知見をもとに、Appleの配布方式「非表示App(Unlisted App)」について、申請手順や押さえるべきポイントなどをまとめてみたいと思います。

この記事で書くこと

書くこと

  • 非表示Appとは?
  • 非表示Appの申請手順
  • 配布する上での注意事項

書かないこと

  • AppleDeveloperProgram(以下ADP)、AppleDeveloperEnterpriseProgram(以下ADEP)のアカウント登録方法などの事前準備
  • 通常の審査で必要な素材準備など(スクリーンショットなど)

非表示Appとは?

まず、Appleが用意している配布方法は大きく3つあります。

(1) 一般公開App(Public App):
 一般的なAppStoreに配布する方法。一般ユーザに広く公開される(してもよい)アプリ。

(2) 非公開App(Private App):
 カスタムApp、 In House(ADEP)。特定企業が使う公開したくない業務用アプリなどで使用する。

(3) 非表示App(Unlisted App):
 URLで配布可能。AppStoreで検索しても出てこない。(1)(2) では対応できない例外的なケース。

(3) が今回の記事で紹介する配布方法の「非表示App」となります。
App Storeで非表示Appとしてリリースされると、ユーザーはダイレクトリンク(ダウンロードURL)経由でインストールが可能になります。また、App Storeの検索結果にも表示されません。
そのため、配信者は(QRコードなどで)ダイレクトリンクをユーザーに共有することで即座にダウンロードができるということになります。

TestFlightのパブリックリンクの人数無制限版と考えていただくとわかりやすいかもしれません。
ただし、非表示AppはTestFlightのようなテスト用途でもなく、カスタムAppなどの非公開Appでも対応できない場合の例外的な対応として、Appleは提供しています。
そのため後述いたしますが、なぜ「非表示アプリではいといけないか」という理由を申請フォームで提出のうえ承認を得る必要があります(質問内容も厳しめ)。

ここで「(1)(2)では対応できない例外的なケース」とは、何ぞやとなりますが、公式サイトには以下のような例示がありますので参考になれば幸いです。

  • 限定的なユーザー(パートタイムの従業員、フランチャイズ、パートナー、関連会社、高等教育機関の学生、会議の出席者など)。
  • App StoreおよびApple School ManagerまたはApple Business Managerで使用できる標準的なリンクを使って配信できます。
    Apple School ManagerまたはApple Business Managerの管理対象外の、従業員所有のデバイス。
  • 管理対象デバイスと非管理対象デバイス。
  • App Storeがサポートするすべての地域。

非表示Appの大まかな手順

非表示Appで公開するまでの手順は大まかに以下の通りです。
一般公開Appと同じ1および2は今回割愛とさせていただきます。

  1. ipaファイル準備(今回は説明省略)
  2. AppStoreConnectにアップロード(今回は説明省略)
  3. AppReviewへ提出
  4. 非表示アプリリンクのリクエスト
  5. 公開

※Appleが用意している公式ドキュメントはこちらになります。

AppReviewへの提出

前提として既にリリースされているアプリではなく、今回が初回リリース(審査)となるアプリを想定します。

まず、通常の一般公開アプリの通り、審査用のipaファイルを用意しAppStoreConnectにアップロードします。非表示Appのリクエストの前提は「配信の準備が完了し、App Reviewに提出されている状態」と公式に記載がありますので、通常の一般公開と同じく、スクリーンショットなどのメタデータを登録します。

非表示アプリリンクのリクエスト
非表示アプリの配信をリクエストする前に、そのアプリがApp Storeですでに公開されているか、配信の準備が完了し、App Reviewに提出されている状態のどちらかである必要があります。 提出の際は、非表示で配信するアプリである旨を「審査メモ」欄に入力してください。その後に、非表示アプリの配信リクエストを送信してください。
アプリがApp Reviewに提出されていない場合や、アプリがベータ版やプレリリース版の場合は、リクエストが却下されます。
アプリが現在、Apple Business ManagerやApple School Managerを通じて特定組織に対して非公開で配信されている場合は、App Store Connectで新しいアプリレコードを作成してバイナリをアップロードし、App Storeで配信方法を「公開」として設定した後に、リクエストを提出する必要があります。配信方法の設定については、こちらを参照してください。

(引用元)https://developer.apple.com/jp/support/unlisted-app-distribution/

重要】また、非表示Appとして申請する場合、下記2点にご注意ください。

  • アプリの公開形式は「公開」に設定する。
  • 審査メモに「非表示アプリで申請したい」旨、記載する。

上記、問題がなければ、審査に提出します。
配信の準備が完了し、App Reviewに提出されている状態」=「審査が通っていること」が前提条件と認識し、審査通過まで待機しました。(後述しますが、非表示アプリリンクのリクエストには審査通過までさせる必要はなく、提出後、並行して非表示アプリの審査リクエストも送付して問題ない模様です。)

リジェクト

しばらくするとAppleからリジェクト通知が来ました。以下、リジェクト文面になります。
(非表示アプリに関する部分のみ抜粋しております。)

Guideline 3.2 - Business
We found in our review that your app is intended to be used by a specific business or organization, including partners, clients, or employees, but you've selected public distribution on the App Store in App Store Connect. Since the App Store is intended for apps with a public audience, we recommend reviewing the other distribution options available to you through your Apple Developer Program Account.
Next Steps
We understand you may already have submitted a request for unlisted app distribution. If that is the case and your request is approved, you should resubmit your app for review in App Store Connect. If you are not approved for unlisted app distribution, it would be appropriate to consider the other app distribution options.

直訳すると以下の通りです。

Guideline 3.2 - Business
レビューの結果、お客様のアプリケーションはパートナー、クライアント、従業員など特定の企業または組織での使用を目的としていますが、App Store ConnectでApp Storeでの一般配布を選択していることがわかりました。App Storeは一般ユーザー向けのアプリケーションを対象としているため、Apple Developer Programアカウントで利用できるその他の配布オプションを確認することをお勧めします。
次のステップ
すでに非上場アプリの配布リクエストを送信済みかもしれません。その場合、App Store Connectでのレビューのためにアプリを再送信してください。非上場アプリの配布が承認されなかった場合は、他のアプリ配布オプションを検討するのが適切です。

対応内容

対応といたしまして、まず非表示アプリではなく、非公開アプリ(Private)と勘違いされていそうな文面でしたので、「非表示App」で申請したいことを念押ししました。
具体的には以下2点となります。

  • Resolution Centerで「非表示アプリとして申請したい」という旨を再依頼する
  • (念には念を)審査メモに記載していた日本語での非表示アプリである旨の記載に、英語表記も追記しました。
    • 例)また、本アプリは、「非表示で配信するアプリ」になります。(This App is Unlisted App.)

加えて「We understand you may already have submitted a request for unlisted app distribution.」の記載の通り、「申請を出されているかもしれませんが」という書きぶりであったため、一度再申請前のタイミングで非表示Appのリクエストフォームを申請しました(詳細は次項となります)。

非表示アプリリンクのリクエスト

以下、リクエストフォームより非表示Appを申請します(申請には「Account Holder」の権限が必要です)。
https://developer.apple.com/contact/request/unlisted-app/

アプリのメタデータ記述に加えて、非表示 App の配信が妥当かどうかを判断するためと思われる質問項目がいくつか存在します。
(AEDPの不正利用などで新規作成が難しくなった件と類似して、テスト配布用途で悪用されないかなどを考慮してチェックが厳しいのだと推察しております。)

レビュワー次第では、非表示 App の配信申請の結果を待って自動的にレビューを停止、再開してくれる場合もあるようですので、不明点があれば問い合わせや Resolution Center 経由で聞きましょう。

配布用URLの払い出し

フォーム入力後、数日すると審査結果が届き、以下のような配布用のURLが払い出されます(XXXにはidなどが付与されます)。

https://apps.apple.com/us/app/XXXXXXXXXXXXXXXXXXXXXXX

※配信国は日本のみですが、今回はusドメインの配布URLが払い出されました(アプリページへは問題なく遷移します)
※URL発行後、アプリレコードの「価格および配信状況」セクションで、アプリの配信方法が「非表示アプリ」に変更されます。

その後、一度リジェクトされていた審査を再審査を提出(Resolution Centerで申請通過の旨を返信)。無事アプリも審査通過となりました。

公開

以上をもって、非表示アプリとして公開する準備が整いました(非表示アプリリンクのリクエスト承認済み & アプリが審査通過している状態)。
あとは、通常のストア公開アプリと同様に公開ボタンを押して完了です。
以降、アプリリンクからダウンロードが可能になります(勿論、AppStoreでは検索には出てきません)。

注意事項

  • 一度非表示アプリとして公開させたアプリを、一般公開アプリとして配布(切り替え)は可能か?
    • 結論、できません。
    • Appとして審査が通過しURLが払い出されると、以降一般公開Appとして配布は不可のようです。
    • bundle idを変えて新しいアプリとして再審査を踏む必要があります。

注:アプリが承認されると、配信方法の設定は変更できなくなります。ただし、アプリの配信設定を公開から非表示に変更する場合は、その限りではありません。非公開から公開、あるいは公開から非公開に変更するには、新規でアプリレコードを作成しバイナリを再提出する必要があります。

(引用元)https://developer.apple.com/jp/help/app-store-connect/manage-your-apps-availability/set-distribution-methods#make-your-app-avai[…]ough-a-direct-link

※一度公開しているアプリを非表示アプリとすることは可能です。それを戻すことはできません。
※「非公開(private)」という書き方なので「非表示(unlisted)」は一般公開に変更できるのでは?とも推測できますが、以下の記事を参考にすると、「unlisted(非表示)」もNGという書きぶりでしたので、変更はできない可能性が高いです。
https://www.runway.team/blog/unlisted-app-distribution-on-the-app-store

  • ダイレクトリンク(ダウンロードURL)は誰でもインストール可。
    • こちらは公式記事でも言及されておりますが、URLは誰でもダウンロード可能です。
    • そのため、不正使用を防止するための仕組みを独自に実装することが推奨されています(例えば社内ポータルにURLを配置するなど)。

非表示アプリは、リンクを持っているユーザーなら誰でも利用できます。そのため、不正使用を防止するための仕組みをアプリに実装することを検討してください。

(引用元)https://developer.apple.com/jp/support/unlisted-app-distribution/

最後に

本日はAppleの配布方式「非表示App」について紹介させていただきました。
重ねてになりますが、あくまでも一般公開Appや非公開Appで対応できない場合での配布方法になります。安易に「リンクで配布できて楽だから」という理由で非表示Appを選択するのではなく、何故、非表示Appで配信でないといけないのか、代替手段はないのか、など慎重に検討いただければと思います。
(一度非表示Appで公開すると切り戻りも難しいため)

以上となります。これらの情報が、アプリリリース時の一助になれば幸いです。
明日の記事はYamamotoさんが執筆します!お楽しみに!

参考

非表示アプリの配信について(Apple公式)
https://developer.apple.com/jp/support/unlisted-app-distribution/
https://developer.apple.com/jp/help/app-store-connect/manage-your-apps-availability/set-distribution-methods#make-your-app-avai[…]ough-a-direct-link

非表示App配布に関する参考記事
https://www.micss.biz/2022/02/07/5041/
https://qiita.com/daimyo404/items/a43b684d856e5527ec70
https://qiita.com/YutaManaka/items/28106ba70716e0d4f488
https://qiita.com/hugehoge/items/12ffc43dbed1dd286f3f
https://www.runway.team/blog/unlisted-app-distribution-on-the-app-store

Sun* Developers

Discussion