Webサイトへのリンクを含む「リーダー」アプリの配信
リーダーアプリとは、雑誌、新聞、書籍、オーディオ、音楽、動画などのデジタルコンテンツの提供を主な目的としたアプリを指します。リーダーアプリでは、ユーザーがアプリ外で作成したアカウントにサインインして、購入したメディアコンテンツやサブスクリプションコンテンツをAppleデバイス上で読んだり視聴したりできます。ユーザーがアカウントを作成または管理するためのWebサイトへのリンクをリーダーアプリ内で提供する場合は、外部リンクアカウントエンタイトルメントのリクエスト、利用ガイドライン、実装に関する詳細を確認してください。
外部リンクアカウントエンタイトルメントのリクエスト
このエンタイトルメントの使用に関心がある場合は、まずリクエストフォームを送信してください。リクエストするユーザーはApple Developer ProgramのAccount Holderである必要があり、当該のアプリに関していくつかの質問に回答して、エンタイトルメントの利用規約に同意する必要があります。エンタイトルメントのリクエストはバンドルID(アプリの固有識別子)単位で行い、割り当てられたエンタイトルメントは、そのバンドルIDに関連付けられている1つのバイナリでのみ使用できます。エンタイトルメントを受けるアプリの利用要件は以下の通りです。
- アプリのメインの機能として、雑誌、新聞、書籍、オーディオ、音楽、動画のいずれかのデジタルコンテンツを提供していること。
- アカウントへのサインインを許可していること。
- サインイン後は、アプリ外(Webサイトなど)で購入されたコンテンツやサービスへのアクセスを許可していること。
- 外部リンクアカウントエンタイトルメントを使用している場合は、iOS、iPadOS、tvOSでアプリ内課金を提供しないこと。
- リアルタイムでの個人対個人のサービス(教育サービス、医療相談、不動産ツアー、フィットネスクラスなど)を提供しないこと。
注:音楽や動画などのデジタルコンテンツへのアクセスを提供するアプリであっても、これをメインの機能としていない場合はリーダーアプリとは認められず、外部リンクアカウントエンタイトルメントの対象とはなりません。たとえば、ユーザーがオーディオビジュアルコンテンツをストリーミング配信できるソーシャルネットワークアプリは対象外となります。
Xcodeでのエンタイトルメントの設定と有効化
アカウントにエンタイトルメントが割り当てられた旨を通知する確認Eメールを受信し、「Certificates, Identifiers & Profiles(証明書、ID、プロファイル)」でそのエンタイトルメントをサポートする対象アプリに対してアプリ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ファイルとキャッシュされているプロビジョニングプロファイルとの不一致が検出され、コード署名プロセスを完了するために、最新のアプリID構成をベースとした新しいプロビジョニングプロファイルが要求されます。
Info.plistファイルの更新
各エンタイトルメントにはデータに対する固有の要件があり、それをアプリのInfo.plistファイルに入力する必要があります。
ファイルのデータを更新する方法
- プロジェクトナビゲータでInfo.plistファイルを選択します。
- このエンタイトルメントに以下の値を設定します。
- キー:SKExternalLinkAccount
- 型:文字列値を持つ辞書
- キー:キーとして地域コード、および値として1つのURL。これには、デフォルトURLにマッピングされる文字列*を持つキーが含まれている必要があります。
- 値:1つのリンク先URL(Webサイトへのリンク)
注:XcodeでInfo.plistファイルに設定するURLは、App Reviewに提出したアプリバイナリでの値と常に一致している必要があります。各値が、以下の条件をすべて満たす文字列であることを確認してください。
- httpsスキームを使用していること。
- 有効な絶対URLになっていること。
- クエリパラメータを含まないこと。
- 1,000以下のASCII文字で構成されていること。
アプリとリンクに関する要件
アプリのエンタイトルメントの有効化および必要なExternal Link Account APIの実装に加え、用途に関する要件も満たす必要があります。これは、プライバシーとセキュリティの保護、詐欺行為や不正行為の防止、ユーザー体験全体のクオリティ維持を可能にするために設定されています。リーダーアプリで提供されるすべてのリンクは、以下の要件を満たす必要があります。
- デベロッパが所有する、または管理責任を負っているWebサイトにリンクしている。
- デバイスのデフォルトブラウザで別のウインドウが開く(Webビューは開かない)。
- URLに付加的なパラメータを渡さない(プライバシーなどのユーザー保護のため)。
- 当該のリーダーアプリと共にApp Storeに提出し、URLが変更された場合は再度提出する。
- 対象Webサイトで提供されているアイテムの価格を含む表現を使用しない(「example.comにアクセスしてアカウントを作成または管理してください」などの表現は可)。
- 標準HTMLリンクに沿った形式(下線の付いた青いテキストなど)とし、Webサイトのドメイン名を含める。
- アプリの1ページにつき1回のみ表示し、各インスタンスで同じメッセージを表示する。
- App Storeに提出する前に、アプリのInfo.plist内のexternal-link.accountのキー値で静的に定義する。
- リダイレクト、中間リンク、ランディングページを一切介さず、対象のWebサイトに直接リンクされている。
システム要件
外部リンクアカウントエンタイトルメントは、App Storeが利用可能なすべての国や地域で配信されている承認済みリーダーアプリで使用でき、iOS、iPadOS、またはtvOS 16.4以降を搭載しているデバイスに対応します。
アプリ内モーダルシートの実装
StoreKit APIの使用:アカウントの作成や既存アカウントの管理の目的でユーザーがWebサイトへのリンクをタップするたびに、リンク先に移動する前に、アプリ内でインタースティシャルモーダルシートを表示する必要があります。アプリでは、このシートを表示する前に、canMakePaymentsをコールして、ユーザーが支払いを行う権限を持っていることを確認する必要があります。
モーダルシートの詳細への準拠:iOS 16以降、iPadOS 16以降、tvOS 16.4以降では、External Link Account APIを使用することでモーダルシートが実装されます。これ以前のバージョンのiOSやiPadOSを搭載しているデバイスでは、以下に示すモーダルシートのデザインとテキストをそのまま使用して、モーダルシートを実装する必要があります。
複数の地域への対応:特定地域版WebサイトのURLを使用する場合は、各地域用のキーおよび対応するURL文字列値を含む辞書として、アプリが使用するInfo.plistファイルにそのURLを追加する必要があります。さらに、Appleから提供されている地域テキスト文字列をモーダルシートの実装に使用してください。
審査に向けたApp Store Connectでのアプリ提出
審査に向けてアプリのバイナリをApp Store Connectに提出する際は必ず、エンタイトルメントの利用規約、App Reviewガイドライン、Apple Developer Program使用許諾契約を遵守してください。
加えて、以下の条件を満たしている必要があります。
- アプリ内モーダルシートが適切に実装およびテストされていること。
- アプリとリンクしているWebサイトが完全に機能していること。
- アプリのUIでのユーザーに対する必要な情報開示を示すスクリーンショットを同時に提出すること。
提出した内容に不備がある場合は、審査の所要時間が長くなることや、アプリが却下されることがあります。アプリの審査が行われると、App Store Connectでのステータスが更新され、通知が送信されます。
よくある質問
当該のリーダーアプリは、すでにApp Storeで公開されています。それでもエンタイトルメントを使用する必要はありますか?
いいえ。外部リンクアカウントエンタイトルメントは任意で、アカウントの作成や管理のためにWebサイトとリンクするリーダーアプリのみで必須となっています。ガイドライン3.1.3 (a)に従い、リーダーアプリは、無料ユーザー向けのアカウント作成機能や、アプリ内での既存ユーザー向けのアカウント管理機能を引き続き提供することができます。
アカウントの作成と管理のための当社Webサイトへのリンクを、アプリのメタデータに含めることは可能ですか?
いいえ。リーダーアプリには、アカウントの作成と管理のために外部Webサイトへのリンクを含めることはできますが、これは、外部リンクアカウントエンタイトルメントを使用するアプリからのみ利用可能となります。これにより、Appleのエコシステム外にアクセスするユーザーに対して、より安全で透明性の高い環境が実現します。
App Storeで複数のリーダーアプリを配信しています。複数のアプリで、同じ割り当て済みエンタイトルメントを使用することはできますか?
いいえ。外部リンクアカウントエンタイトルメントはバンドルID(アプリの固有識別子)単位で割り当てられるため、割り当て済みエンタイトルメントはそのバンドルIDに関連付けられている1つのバイナリのみで使用できます。複数のリーダーアプリがある場合は、その各リーダーアプリに対してエンタイトルメントを個別にリクエストする必要があります。
アプリ内課金を提供するアプリで、アカウントの作成と管理のためのWebサイトにリンクするために、エンタイトルメントを使用することは可能ですか?
iOS、iPadOS、tvOSでのアプリ内課金機能を搭載するアプリでは、エンタイトルメントを使用できません。
すでにApp Storeで配信しているアプリをリーダーアプリに変更することは可能ですか?
場合によります。アプリのビジネスモデルは、デベロッパが新しいコンテンツや機能を追加するに従い、時間と共に変化する場合もあります。しかし、アプリの主要機能を大幅に変更してしまうアップデートを提出することは適切ではありません。これは、既存ユーザーの使用感を損なってしまうためです。新しいアプリのコンセプトがあり、これをApp Storeで配信したい場合、アプリのレコードとバイナリを新規作成して、審査に提出することが推奨されます。
外部リンクアカウントエンタイトルメントを割り当てられましたが、アプリを審査に提出したところ、このリーダーアプリは対象外だと通知されました。これはどのように解決すべきですか?
App Storeに提出されるすべてのアイテムは、App Reviewによる承認の対象となります。アプリの提出プロセスにおいて、そのアプリがリーダーアプリとしての条件を満たしていないと判断された場合は、外部リンクアカウントエンタイトルメントが含まれている限りアプリは承認されません。App Store Connectのメッセージで詳細を確認してください。
アプリにExternal Link Account APIを使用する必要はありますか?
iOS 16以降、iPadOS 16、tvOS 16.4以降を対象とし、外部リンクアカウントエンタイトルメントを含むリーダーアプリには、External Link Account APIを使用する必要があります。2022年10月12日以降、アプリがApp Storeで配信されている場合は、このAPIを実装して更新したアプリを提出する必要があります。