Xamarin.iOS での非コンシューマブル製品の購入
非コンシューマブル製品は、顧客によって ‘所有’ されます。 デバイスの紛失や盗難の場合や、新しいデバイスを購入した場合でも、常にアクセスできることが期待されます。 書籍、雑誌の発行、ゲーム レベル、レンズ フィルター、‘プロ機能‘ などに役立ちます。ユーザーが非コンシューマブル製品を購入すると、二度と支払いを行う必要はありません。 コードを誤って試した場合、StoreKit には既に購入済みであることを示すメッセージが表示されます。
非コンシューマブル製品のサンプル
このサンプルには、NonConsumables というプロジェクトが含まれています。 コード サンプルでは、例としてレンズ フィルターを使用して非コンシューマブル製品を実装する方法を示します。 フィルターを購入したら、これを何度でも写真に適用できます。 再購入する必要はありません。
購入プロセスは、この一連のスクリーンショットに表示されます。[購入] ボタンが機能アクティブ化ボタンになります。
購入プロセスはコンシューマブル製品の場合と同じです。主な違いは、アプリケーション コードでの購入の追跡方法です。 この例では、[購入] ボタンは、製品がまだ購入されていない場合にのみ使用できます。それ以外の場合は、ボタンによって機能自体をアクティブにします。
次の図は、非コンシューマブル製品の購入を実行するためのクラスと App Store サーバー間のやりとりを示しています。
コンシューマブル製品の例との主な違いは、購入が完了すると、再購入を防ぐためにユーザー インターフェイスが更新されることです。 この例では、トランザクションが正常に行われたことが通知されると、ユーザー インターフェイスが更新され、[購入] ボタンが機能自体をアクティブ化するボタンに変換されます。
非コンシューマブル製品の再購入
お使いのコードでは通常、一度製品が購入されると、ユーザーが再度製品を購入しようとしないように、購入ボタンを非表示にするか、用途変更する必要があります。 サンプル アプリケーションでは、[購入] ボタンをレンズ フィルターの例を動作させるボタンに変更することでこれを行っています。
非コンシューマブル製品が既に購入されているかどうかをアプリケーションが判断できない場合があります。
- アプリケーションが削除され、デバイスに再インストールされた場合、(ユーザーがバックアップと復元を行わない限り)、すべての購入レコードは削除されます。
- ユーザーがアプリケーションを 2 つ (またはそれ以上) のデバイスにインストールし、そのうちの 1 つのデバイスで購入した場合。 その他のデバイスでは、購入可能な製品が引き続き表示されます。
- このような状況で、ユーザーが非コンシューマブル製品を再購入しようとすると、App Store は再び無料で製品を補充します。 ユーザー インターフェイスは最初は購入を実行するように表示されます (たとえば、確認アラートが表示され、Apple ID が要求されます) が、ユーザーには、製品が既に購入されていることを通知するメッセージが表示されます。
このシナリオでのコード パスは通常の購入とまったく同じですが、唯一の違いは次のとおりです。
- ユーザーはサイド製品の料金を請求されません。
- アプリケーションに渡される
SKPaymentTransaction
オブジェクトには、製品が最初に購入されたときに生成されたトランザクションを参照するOriginalTransaction
プロパティがあります。 - 非コンシューマブル製品を販売するアプリケーションでは、ユーザーが既存の購入を取得するのに役立つ StoreKit の [復元] 機能も実装する必要があります。