web-dev-qa-db-ja.com

アプリ内購入の「購入の復元」とはどういう意味ですか?

私はこの考えを本当に理解していません。ユーザーに復元ボタンを提供する必要がありますか?このメソッドはどのメソッドを呼び出す必要がありますか?復元は何をしますか?

24
Geri

通常、次のコードを使用して購入を復元します。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

購入したアイテムのオブザーバーで-paymentQueue:updatedTransactionsを再度呼び出します。これは、削除後にアプリを再インストールするか、別のデバイスにインストールするユーザーに役立ちます。

すべての種類のアプリ内購入を復元できるわけではありません。

30
Felix

Appleから拒否メッセージが表示されます。これは、inApp購入に登録した製品が非更新サブスクリプションおよび消耗品製品のカテゴリに分類される可能性があるためです。アプリケーションに明示的な復元ボタンがあります。

他のタイプの製品の場合、自動的に復元されます。

これに関するあなたの概念を明確にする次のテキストを読んでください:

トランザクションが処理され、キューから削除されると、通常、アプリケーションはそれを再び見ることはありません。ただし、復元可能な製品タイプをアプリケーションがサポートしている場合は、ユーザーがこれらの購入を復元できるようにするインターフェイスを含める必要があります。このインターフェイスを使用すると、ユーザーは製品を他のデバイスに追加したり、元のデバイスがワイプされた場合に元のデバイスにトランザクションを復元したりできます。

Store Kitは、非消耗品、自動更新可能なサブスクリプション、無料サブスクリプションのトランザクションを復元するための組み込み機能を提供します。トランザクションを復元するために、アプリケーションは支払いキューのrestoreCompletedTransactionsメソッドを呼び出します。支払いキューはApp Storeにリクエストを送信して、トランザクションを復元します。その代わりに、App Storeは以前に完了したトランザクションごとに新しい復元トランザクションを生成します。復元トランザクションオブジェクトのoriginalTransactionプロパティには、元のトランザクションのコピーが保持されます。アプリケーションは、元のトランザクションを取得し、それを使用して購入したコンテンツのロックを解除することにより、復元トランザクションを処理します。 Store Kitは以前のトランザクションをすべて復元した後、paymentQueueRestoreCompletedTransactionsFinished:メソッドを呼び出すことにより、支払いキューのオブザーバーに通知します。

ユーザーが(実装した復元インターフェイスを使用する代わりに)復元可能な製品を購入しようとすると、アプリケーションは復元トランザクションではなく、そのアイテムの通常のトランザクションを受け取ります。ただし、ユーザーはその製品に対して再度請求されることはありません。アプリケーションは、これらのトランザクションを元のトランザクションのトランザクションと同一に扱う必要があります。非更新のサブスクリプションと消耗品は、Store Kitによって自動的に復元されません。ただし、非更新サブスクリプションは復元可能でなければなりません。これらの製品を復元するには、購入時に独自のサーバーにトランザクションを記録し、それらのトランザクションをユーザーのデバイスに復元する独自のメカニズムを提供する必要があります

7
Gaurav

オプション機能としてですか?.

ユーザーが非消耗品を購入しようとしたときに提供しない場合、AppStoreは古いトランザクションを復元します。しかし、アプリはこれが新しいトランザクションであると考えます。

復元メカニズムを提供する場合、購入マネージャーには復元されたトランザクションが表示されます。

アプリでこのオプションを区別する必要がある場合は、以前に購入した製品を復元する機能を提供する必要があります。

2
Nekto