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のプロジェクト、エンタイトルメントplistファイル、Info.plistファイルを更新して、エンタイトルメントとメタデータをリストに追加する必要があります。

エンタイトルメントが有効化されたXcodeのスクリーンショットエンタイトルメントが有効化されたXcodeのスクリーンショット

更新方法

  1. プロジェクトナビゲータで、対象の.entitlementsファイルを選択します。Xcode 13では、ファイル名の先頭に黄色のチェックマークアイコンが表示されます。
  2. エンタイトルメントplistファイルで「Entitlements File(エンタイトルメントファイル)」行にポインタを合わせて追加ボタン(+)をクリックし、新しいエンタイトルメントのキーペアを追加します。
  3. エンタイトルメントに以下の値を設定します。
    1. キー:com.apple.developer.storekit.external-link.account
    2. 型:Boolean
    3. 値:True
  4. 以下の「Info.plistファイルの更新」を参考にして、必要なメタデータをInfo.plistファイルに設定します。

Xcode Organizerでデバイスの次のビルドの作成や配信リクエストを行うと、Xcodeは、この.entitlementsファイルとキャッシュされているプロビジョニングプロファイルとの不一致を検出します。コード署名プロセスを完了するために、Xcodeから最新のApp ID構成をベースとした新しいプロビジョニングプロファイルが要求されます。

Info.plistファイルの更新

各エンタイトルメントにはデータに対する固有の要件があり、それをAppのInfo.plistファイルに入力する必要があります。

ファイルのデータを更新する方法

  1. iOSターゲットのプロジェクトナビゲータからInfo.plistファイルを選択します。
  2. このエンタイトルメントに以下の値を設定します。
    1. キー:SKExternalLinkAccount
    2. 型:文字列値を持つ辞書
      1. キー:キーとして地域コード、および値として1つのURL。これには、デフォルトURLにマッピングされる文字列*を持つキーが含まれている必要があります。
      2. 値:1つのデスティネーションURL(対象Webサイトへのリンク)

注意:XcodeでInfo.plistファイルに設定するURLは、App Reviewに提出したAppバイナリでの値と常に一致している必要があります。各値が、以下の条件をすべて満たす文字列であることを確認してください。

  • httpsスキームを使用していること。
  • 有効な絶対URLになっていること。
  • クエリパラメータを含まないこと。
  • 1,000以下のASCII文字で構成されていること。

AppのInfo.plistファイルの管理方法を確認する

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を呼び出して、ユーザーが支払いを行う権限を持っていることを確認する必要があります。

モーダルシートの詳細に準拠する。iOS 16以降およびiPadOS 16以降では、External Link Account APIを使用することでモーダルシートが実装されます。それより前のバージョンのiOSやiPadOSを搭載しているデバイスでは、以下に示すモーダルシートの設計とテキストをそのまま使用して、モーダルシートを実装する必要があります。

複数の地域に対応させる。特定地域版WebサイトのURLを使用する場合は、各地域用のキーおよび対応するURL文字列値を含む辞書として、Appが使用するInfo.plistファイルにそのURLを追加する必要があります。さらに、Appleから提供されている地域テキスト文字列をモーダルシートの実装に使用してください。

設計仕様(5 MB)をダウンロード

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のメッセージで詳細を確認してください。

開発しているAppに、External Link Account APIを使用する必要はありますか?

iOS 16以降やiPadOS 16以降を対象とし、外部リンクアカウントエンタイトルメントを含むリーダーAppには、External Link Account APIを使用する必要があります。AppがApp Storeで配信されている場合は、APIを実装して更新したAppを2022年10月12日までに提出する必要があります。

リソース