次の方法で共有


Xamarin.iOS でのアプリ内購入の基本と構成

アプリ内購入を実装するには、アプリケーションがデバイス上で StoreKit API を利用する必要があります。 StoreKit は、Apple の iTunes サーバーとの通信をすべて管理して製品情報を取得し、トランザクションを実行します。 アプリ内購入用にプロビジョニング プロファイルを構成し、iTunes Connect に製品情報を入力する必要があります。

StoreKit manages all communication with Apple’s as shown in this chart

App Store を使用して、アプリ内購入を提供するには、次の設定と構成が必要です。

  • iTunes Connect – 販売する製品を構成し、購入をテストするためのサンドボックス ユーザー アカウントを設定します。 また、Apple が開発者の代理で集めた資金を送金できるように、銀行と税金に関する情報を Apple に提供しておく必要もあります。
  • iOS プロビジョニング ポータル – バンドル識別子を作成し、アプリの App Store アクセスを有効にします。
  • StoreKit - 製品の表示、製品の購入、トランザクションの復元のためのコードをアプリに追加します。
  • カスタム コード - 顧客による購入を追跡し、購入した製品またはサービスを提供します。 また、製品がサーバーからダウンロードされたコンテンツ (書籍や雑誌発行など) で構成されている場合に、領収書を検証するためにサーバー側のプロセスを実装する必要がある場合もあります。

ストア キットの「サーバー環境」は 2 つあります。

  • 運用環境 – 実際のお金を使用したトランザクション。 Apple によって提出および承認されたアプリケーション経由でのみアクセスできます。 また、アプリ内購入製品は、運用環境で使用可能になる前にレビューおよび承認が必要があります。
  • サンドボックス – テストを実施する環境。 製品は作成直後にこの環境で使用できます (承認プロセスは運用環境にのみ適用されます)。 サンドボックス内のトランザクションを実行するには、(実際の Apple ID ではなく) テスト ユーザーが必要です。

アプリ内購入ルール

アプリ内のデジタル製品やサービスに対する他の支払い方法を利用することはできません。また、アプリ内から他の支払い方法に言及したり、ユーザーに参照させたりすることもできません。 つまり、アプリ内購入が最も適切な支払い方法である場合は、クレジット カードや PayPal を利用することはできません。 アプリの外部でデジタル製品を購入する場合、特定の "ログイン" に関連付けられている Web サイト上の書籍を購入し、その "ログイン" をアプリ内で使用することで、ユーザーが購入した書籍にアクセスできるようにするなど、アプリ内で使用する特別なケースがあります。 この方法で動作するアプリケーションは、外部の購入機能に言及したり、リンクしたりすることはできません。開発者はこの機能を他の方法 (メール マーケティングやその他の直接的なチャネルなどを介して) でユーザーに伝える必要があります。

ただし、物理的な商品についてはアプリ内購入を使用できないため、その場合は、アプリ内から別の支払い方法 (クレジット カード、PayPal など) を使用できます。

Apple は、発売前にすべての製品を承認する必要があります。レビューには、製品名、説明、および「製品」のスクリーンショットが必要です。 製品のレビュー時間は、アプリケーションのレビューと同じです。

製品の価格を自由に選択することはできません。Apple がサポートする国/通貨ごとに特定の値を持つ「価格レベル」のみを選択できます。 市場ごとで異なる価格レベルを設定することはできません。

構成

アプリ内購入コードを記述する前に、iTunes Connect (itunesconnect.apple.com) と iOS プロビジョニング ポータル (developer.apple.com/iOS) でセットアップ作業を行う必要があります。

コードを記述する前に、次の 3 つの手順を完了する必要があります。

  • Apple 開発者アカウント – 銀行情報と課税情報を Apple に提出します。
  • iOS プロビジョニング ポータル – アプリが有効なアプリ ID (アスタリスク * が含まれるワイルドカードではなく) を持ち、アプリ購入が有効になっていることを確認します。
  • iTunes Connect アプリケーション管理 – アプリケーションに製品を追加します。

Apple 開発者アカウント

無料アプリのビルドと配布には、iTunes Connect での構成はほとんど必要ありませんが、有料アプリやアプリ内購入を販売するには、Apple に銀行情報と課税情報を提供する必要があります。 次に示すメイン メニューから [契約]、[税金]、[銀行] をクリックします。

Click on Agreements, Tax and Banking from the main menu

開発者アカウントには、次のスクリーンショットに示すように、iOS 有料アプリケーション契約が有効になっている必要があります。

Your Developer Account should have an iOS Paid Applications contract in effect

iOS 有料アプリケーション契約を締結するまで、StoreKit の機能をテストすることはできません。Apple が契約、税金、銀行情報を処理するまでコード内の StoreKit 呼び出しは失敗します。

iOS プロビジョニング ポータル

新しいアプリケーションは、iOS プロビジョニング ポータル[アプリ ID] セクションで設定されます。 新しいアプリ ID を作成するには、iOS プロビジョニング ポータルのメンバー センターで、ポータルの [証明書、識別子、プロファイル] セクションに移動し、[iOS アプリ][識別子] をクリックします。 次に、右上の "+" をクリックして新しいアプリ ID を生成します。

新しい アプリ ID を作成するフォーム

このフォームは、次のように表示されます。

The form for creating new App IDs

[説明] には、このアプリ ID を一覧で簡単に識別できるように、適切な内容を入力します。 [アプリ ID プレフィックス] で、チーム ID を選択します。

バンドル識別子/アプリ ID サフィックス形式

バンドル識別子には (アカウント内で一意である限り) 任意の文字列を使用できますが、Apple では任意の文字列を使用するのではなく、逆引き DNS 形式に従うことをお勧めします。 この記事に付属するサンプル アプリケーションでは、バンドル識別子に com.xamarin.storekit.testing を使用していますが、(Apple では推奨されていませんが) my_store_example のような識別子を使用する場合も同様に有効です。

重要

Apple では、1 つのアプリ ID を複数のアプリケーションで使用できるようにバンドル識別子の末尾にワイルドカードのアスタリスクを追加することもできますが、ワイルドカードのアプリ ID をアプリ内購入で使用することはできません。 ワイルドカード バンドル識別子の例として、「com.xamarin.*」などがあります。

App Services の有効化

サービス一覧でアプリ内購入が自動的に有効になることに注意してください。

In-App Purchase will be automatically enabled in the Services list

プロビジョニング プロファイル

通常どおりに開発プロビジョニング プロファイルおよび運用プロビジョニング プロファイルを作成し、アプリ内購入用に設定したアプリ ID を選択します。 詳細については、「iOS デバイス プロビジョニング」および「App Store への発行」ガイドを参照してください。

iTunes Connect

iTunes Connect で [マイ アプリ] をクリックして、iOS アプリケーション エントリを作成または編集します。 アプリケーションの概要ページを次に示します。

The application overview page

[アプリ内購入] をクリックして、販売する製品を作成または編集します。 このスクリーンショットは、いくつかの製品が既に追加されているサンプル アプリを示しています。

The sample app with several products already added

新しい製品を追加するプロセスには、次の 2 つの手順があります。

  1. 製品の種類を選択します: Choose the product type
  2. 製品 ID、価格レベル、ローカライズされた説明など、製品の属性を入力します: Entering the products attributes

各アプリ内購入製品に必要なフィールドを次に示します。

参照名

参照名はユーザーに表示されません。参照名は内部使用のためであり、iTunes Connect にのみ表示されます。

製品 ID 形式

製品識別子には、英数字 (A から Z、a から z、0 から 9)、アンダースコア (_)、ピリオド (.) 文字のみを使用できます。 識別子には任意の文字列を使用できますが、Apple では逆引き DNS 形式をお勧めします。 たとえば、サンプル アプリケーションでは次のバンドル識別子を使用します。

com.xamarin.storekit.testing

そのため、アプリ内購入製品を識別する規則は次のようになります。

com.xamarin.storekit.testing.consume5credits
com.xamarin.storekit.testing.consume10credits
com.xamarin.storekit.testing.sepia
com.xamarin.storekit.testing.greyscale

この名前付け規則は強制されるものではなく、単に製品の管理に役立つ推奨事項です。 さらに、同じ逆引き DNS 規則に従っているにもかかわらず、製品識別子はバンドル識別子に関連していないため、同じ文字列で始まる必要もありません。 (Apple では推奨されていませんが) photo_product_greyscale のような識別子を使用することは引き続き有効です。

製品 ID はユーザーには表示されませんが、アプリケーション コードで製品を参照するために使用されます。

Product Type

提供できるアプリ内購入製品には、次の 5 種類があります。

  1. 消耗品 – プレイヤーが使えるゲーム内通貨など、「使い切る」もの。 ユーザーがバックアップ/復元を実行した場合、またはデバイスを更新した場合でも、消費品トランザクションは復元されません (実質的にプレイヤーに再び同じ利点を与えるため)。 アプリケーション コードでは、トランザクションが完了したらすぐに「消耗品アイテム」を指定する必要があります。
  2. 非消耗品 – デジタル雑誌の発行やゲームレベルなど、一度購入したユーザーが「所有する」製品。
  3. 自動更新サブスクリプション – 実際の雑誌の定期購読と同様に、Apple はサブスクリプション期間の終了時に、自動的に顧客に再請求し、サブスクリプション期間を延長します。また、顧客が明示的にキャンセルするまで、サブスクリプション期間を延長します。 これは、Newsstand アプリに推奨される支払い方法です (実際、アプリは Newsstand 配信の承認を受けるために、この支払い方法をサポートする必要があります)。
  4. 無料サブスクリプション – Newsstand 対応アプリでのみ提供され、顧客はすべてのデバイスのサブスクリプション コンテンツにアクセスできます。 無料サブスクリプションに有効期限はありません。
  5. 更新されていないサブスクリプション – 写真アーカイブへの 1 か月間のアクセスなど、静的コンテンツへの期間限定アクセスを販売する場合に使用する必要があります。

このドキュメントでは、現在、最初の 2 つの製品の種類 (消耗品と非消耗品) のみを対象としています。

価格レベル

App Store では、製品の価格を任意に設定することはできません。Apple には、選択できる固定価格レベルが用意されています。 価格は各通貨で固定されており、Appleは相対価格を調整する権利を留保します (たとえば、特定の通貨と米国ドルの相対為替レートが持続的に変化した場合など)。

Apple には、必要な通貨/価格に適したレベルを選択するのに役立つ価格マトリックスが用意されています。 価格マトリックス (2012 年 8 月) の抜粋を次に示します。

An excerpt of the price matrix August 2012

執筆時点 (2013 年 6 月) には、0.99 米国ドルから 999.99 米国ドルまでの 87 レベルがあります。 価格マトリックスには、顧客が支払う価格と Apple から受け取る金額が表示されます。この金額から 30% の手数料と、Apple が徴収する必要のある現地税が差し引かれます (例では、米国とカナダの販売者は 99c の製品に対して 70c を受け取り、オーストラリアの販売者は販売価格に課せられる「付加価値税」のため 63c のみを受け取ります)。

製品の価格は、将来の日付に有効になる予定の価格変更を含め、いつでも更新できます。 このスクリーンショットは、将来の日付の価格変更が追加される方法を示しています。9 月の間だけ、価格がレベル 1 からレベル 3 に一時的に変更されています。

A future-dated price change where the price is being temporarily changed from tier 1 to tier 3 for the month of September only

無料の製品はサポートされていません

Apple は Newsstand アプリに特別な無料サブスクリプション オプションを提供していますが、他のアプリ内購入の種類に対して 0 (無料) の価格を設定することはできません。 販売プロモーションの価格を編集 (つまり値下げ) することはできますが、iTunes Connect を介してアプリ内購入を「無料」にすることはできません。

ローカリゼーション

iTunes Connect では、サポートされている言語の数だけ異なる名前と説明のテキストを入力できます。 各言語は、ポップアップで追加/編集できます。

Each language can be added/edited in via a popup

アプリで製品情報を表示すると、ローカライズされたテキストを StoreKit 経由で表示できます。 通貨表示も、正しい記号と 10 進数の書式を表示するようにローカライズする必要もあります。この書式については、このドキュメントの後半で説明します。

App Store レビュー

アプリと同じで、各製品は発売を許可される前に Apple によってレビューされます。 製品名または説明に不適切なコンテンツが含まれていると、製品は拒否される場合があります。または、Apple が製品の種類の選択を間違えたと判断する場合があります (たとえば、書籍や雑誌発行を作成したのに、消耗品製品の種類を使用した場合など)。 製品のレビューには、アプリのレビューと同じくらい時間がかかる場合があります。

アプリ内購入を有効にしてアプリを初めて提出する場合 (新しいアプリでも、既存のアプリに機能が追加された場合でも)、一緒に提出する製品をいくつか選択する必要もあります。 次のスクリーンショットに示すように、iTunes Connect ポータルでこれを行うよう求められます。

The iTunes Connect portal will prompt you to submit some products as well

アプリケーションとアプリ内購入が一緒にレビューされるため、すべて一度に承認されます (承認された製品がないままアプリがストアに並ぶことはありません)。

アプリ内購入機能を備えた最初のバージョンが承認されたら、いつでも製品を追加してレビューに出すことができます。 また、プロンプトが示すように[バージョンの詳細] ページを使用して、特定のアプリ内購入製品と共に新しいバージョンを提出することもできます。

詳細については、「App Store レビュー ガイドライン」を 参照してください。

パート 2 - ストア キットの概要と製品情報の取得