Webサイトへのリンクを含む「リーダー」Appの配信
「リーダー」Appとは、雑誌、新聞、書籍、音声、音楽、動画などのデジタルコンテンツの提供を主な目的としたAppを指します。リーダーAppでは、ユーザーがApp外で作成したアカウントにサインインして、購入したメディアコンテンツやサブスクリプションコンテンツをAppleデバイス上で読んだり視聴したりできます。ユーザーがアカウントを作成または管理するためのWebサイトへのリンクをリーダーApp内で提供する場合は、外部リンクアカウントエンタイトルメントのリクエスト、利用ガイドライン、実装に関する詳細を確認してください。
外部リンクアカウントエンタイトルメントのリクエスト
このエンタイトルメントの使用に関心がある場合は、まずリクエストフォームを送信してください。リクエストするユーザーはApple Developer ProgramのAccount Holderである必要があり、対象となるAppに関していくつかの質問に回答して、エンタイトルメントの利用規約に同意する必要があります。エンタイトルメントのリクエストはバンドルID(Appの固有識別子)単位で行い、割り当てられたエンタイトルメントは、そのバンドルIDに関連付けられている1つのバイナリでのみ使用できます。エンタイトルメントの対象となるためのAppの条件
- 対象Appのメインの機能として、雑誌、新聞、書籍、音声、音楽、動画のデジタルコンテンツタイプを提供していること。
- アカウントへのサインインを許可していること。
- サインイン後は、App外(Webサイトなど)で購入されたコンテンツやサービスへのアクセスを許可していること。
- 外部リンクアカウントエンタイトルメントを使用している場合に、iOSやiPadOSでのApp内課金を提供しないこと。
- リアルタイムでの対面型サービス(教育サービス、医療相談、不動産ツアー、フィットネスクラスなど)を提供しないこと。
注意:音楽や動画などのデジタルコンテンツへのアクセスを許可してもそれをメインの機能としないAppは、リーダーAppとして認められず、外部リンクアカウントエンタイトルメントの対象とはなりません。たとえば、ユーザーがオーディオビジュアルコンテンツをストリーミング配信できるソーシャルネットワークAppは対象外となります。
Xcodeでのエンタイトルメントの設定と有効化
アカウントにエンタイトルメントが割り当てられた旨を通知する確認Eメールを受信し、「Certificates, Identifiers & Profiles(証明書、ID、プロファイル)」でそのエンタイトルメントをサポートする対象Appに対してApp IDを設定し、Xcodeプロジェクト、entitlements plistファイル、Info.plistファイルを更新して、エンタイトルメントとメタデータをリストに追加する必要があります。


更新方法
- プロジェクトナビゲータで対象の.entitlementsを選択します。Xcode 13では、ファイル名の先頭に
アイコンが表示されます。
- エンタイトルメントplistファイルで「Entitlements File(エンタイトルメントファイル)」行にポインタを合わせて追加ボタン(+)をクリックし、新しいエンタイトルメントのキーペアを追加します。
- エンタイトルメントに以下の値を設定します。
- キー:com.apple.developer.storekit.external-link.account
- 型:Boolean
- 値:True
- 以下の「Info.plistファイルの更新」を参考にして、必要なメタデータをInfo.plistファイルに設定します。
Xcode Organizerでのデバイスに対する次のビルドや配信リクエストでは、Xcodeで、この.entitlementsファイルとキャッシュされているプロビジョニングプロファイルとの不一致が検出され、コード署名プロセスを完了するために、最新のApp ID構成をベースとした新しいプロビジョニングプロファイルが要求されます。
Info.plistファイルの更新
各エンタイトルメントにはデータに対する固有の要件があり、それをAppのInfo.plistファイルに入力する必要があります。
ファイルのデータを更新する方法
- iOSターゲットのプロジェクトナビゲータからInfo.plistファイルを選択します。
- このエンタイトルメントに以下の値を設定します。
- キー:SKExternalLinkAccount
- 型:文字列値を持つ辞書
- キー:キーとして地域コード、および値として1つのURL。これには、デフォルトURLにマッピングされる文字列*を持つキーが含まれている必要があります。
- 値:1つのデスティネーションURL(対象Webサイトへのリンク)
注意:XcodeでInfo.plistファイルに設定するURLは、App Reviewに提出したAppバイナリでの値と常に一致している必要があります。各値が、以下の条件をすべて満たす文字列であることを確認してください。
- httpsスキームを使用していること。
- 有効な絶対URLになっていること。
- クエリパラメータを含まないこと。
- 1,000以下のASCII文字で構成されていること。
Appとリンクに関する要件
Appのエンタイトルメントの有効化および必要なExternal Link Account APIの実装に加え、用途に関する要件も満たす必要があります。これは、プライバシーとセキュリティの保護、詐欺行為や不正行為の防止、ユーザー体験全体のクオリティ維持を可能にするために設定されています。リーダーAppで提供されるすべてのリンクは、以下の要件を満たす必要があります。
- デベロッパが所有または責任管理しているWebサイトにリンクしている。
- デバイスのデフォルトブラウザで別のウインドウが開く(ウェブビューは開かない)。
- URLに付加的なパラメータを渡さない(プライバシーなどのユーザー保護のため)。
- 対象のリーダーAppと共にApp Storeに提出し、URLが変更された場合は再度提出する。
- 対象Webサイトで提供されているアイテムの価格を含む表現を使用しない(「example.comにアクセスしてアカウントを作成または管理してください」などの表現は可)。
- 標準HTMLリンクに沿った形式(下線の付いた青いテキストなど)とし、Webサイトのドメイン名を含める。
- Appの1ページにつき1回のみ表示し、各インスタンスで同じメッセージを表示する。
- AppのInfo.plist内のexternal-link.accountのキー値で静的に定義した後に、App Storeに提出する。
- リダイレクト、中間リンク、ランディングページを一切介さず、対象のWebサイトに直接リンクされている。
システム要件
外部リンクアカウントエンタイトルメントは、App Storeが利用可能なすべての国や地域で配信されている承認済みリーダーAppで使用でき、iOSまたはiPadOSを搭載しているデバイスに対応します。
App内モーダルシートの実装
StoreKit APIを使用する。アカウントの作成や既存アカウントの管理の目的でユーザーがWebサイトへのリンクをタップするたびに、リンク先に移動する前に、App内でインタースティシャルモーダルシートを表示する必要があります。Appでは、このシートを表示する前に、canMakePaymentsをコールして、ユーザーが支払いを行う権限を持っていることを確認する必要があります。
モーダルシートの詳細に準拠する。Appleでは、App内モーダルシートを提供する新しいExternal Link Account APIを開発しています。iOSおよびiPadOSのパブリックリリース版でこの新しいAPIが利用可能になった際は、30日以内に、Appの次回アップデートにこれを適用する必要があります。それまでの間は、以下に用意されている設計仕様に厳密に従ってこのモーダルシートを作成する必要があります。
複数の地域に対応させる。特定地域版WebサイトのURLを使用する場合は、各地域用のキーおよび対応するURL文字列値を含む辞書として、Appが使用するInfo.plistファイルにそのURLを追加する必要があります。さらに、Appleから提供されている地域テキスト文字列をモーダルシートの実装に使用してください。

App

モーダルシート

Webサイト
App Store Connectでの審査に向けたApp提出
App Store Connect,での審査に向けてAppを提出する際は必ず、エンタイトルメントの利用規約、App Store Reviewガイドライン、Apple Developer Program使用許諾契約を順守してください。
加えて、以下の条件を満たしている必要もあります。
- App内モーダルシートが適切に実装およびテストされていること。
- AppとリンクしているWebサイトが完全に機能していること。
- AppのUIでのユーザーに対する必要な情報開示を示すスクリーンショットを同時に提出すること。
提出した内容に不備がある場合は、審査の所要時間が長くなることや、Appが却下されることがあります。Appの審査が行われると、App Store Connectでのステータスが更新され、通知が送信されます。
よくある質問
当社のリーダーAppは、すでにApp Storeで公開されています。それでもエンタイトルメントを使用する必要はありますか?
いいえ。外部リンクアカウントエンタイトルメントは任意で、アカウントの作成や管理のためにWebサイトとリンクするリーダーAppのみで必須となっています。リーダーAppには、ガイドライン3.1.3(a)に従い、無料ユーザー層向けのアカウント作成機能や、既存ユーザー向けのアカウント管理機能を引き続き含めることができます。
アカウントの作成と管理のための当社Webサイトへのリンクを、Appのメタデータに含めることは可能ですか?
いいえ。リーダーAppには、アカウントの作成と管理のために外部Webサイトへのリンクを含めることはできますが、これは、外部リンクアカウントエンタイトルメントを使用するAppからのみ利用可能となります。これにより、Appleのエコシステム外にアクセスするユーザーに対して、より安全で透明性の高い環境が実現します。
当社では、App Storeで複数のリーダーAppを配信しています。複数のAppで、同じ割り当て済みエンタイトルメントを使用することはできますか?
いいえ。外部リンクアカウントエンタイトルメントはバンドルID(Appの固有識別子)単位で割り当てられるため、割り当て済みエンタイトルメントはそのバンドルIDに関連付けられている1つのバイナリのみで使用できます。複数のリーダーAppがある場合は、その各リーダーAppに対してエンタイトルメントを個別にリクエストする必要があります。
App内課金を提供するAppで、アカウントの作成と管理のためのWebサイトにリンクするために、エンタイトルメントを使用することは可能ですか?
iOSやiPadOSでApp内課金機能を搭載するAppでは、エンタイトルメントを使用できません。
すでにApp Storeで配信しているAppをリーダーAppに変更することは可能ですか?
場合によります。Appのビジネスモデルは、デベロッパが新しいコンテンツや機能を追加するにしたがい、時間と共に変化する場合もあります。しかし、Appの主要機能を大幅に変更してしまうアップデートを提出することは適切ではありません。これは、既存ユーザーの使用感を損なってしまうためです。App Storeでの配信を目指す新しいAppのコンセプトがある場合は、Appレコードとバイナリを新たに作成して審査用に提出することが推奨されます。
割り当て済みの外部リンクアカウントエンタイトルメントがあるのですが、審査に向けてAppを提出したところ、このリーダーAppは対象外だと通知されました。これはどのように解決すべきですか?
App Storeに提出するすべてのアイテムは、App Reviewによる承認の対象となります。App提出プロセスにおいて、そのAppがリーダーAppとしての条件を満たしていないと判断された場合は、外部リンクアカウントエンタイトルメントが含まれている限りAppは承認されません。App Store Connectのメッセージで詳細を確認してください。
予定されているExternal Link Account APIはいつ利用可能になりますか?また、Appでこれを使用することが必須になるのはいつですか?
External Link Account APIは、予定されているiOSとiPadOSのベータ版リリースでリーダーAppをビルドおよびテストするために利用可能になります。外部リンクアカウントエンタイトルメントがAppに割り当てられている場合は、App Storeへの次回の提出の際、iOSとiPadOSのパブリックリリースでAPIが利用可能になった30日以内にこのAPIを導入する必要があります。