問題: 私が呼び出すと、空のトランザクション配列で[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
オブザーバーに戻ります。しかし、私は非消耗品のアプリ内paymentQueueRestoreCompletedTransactionsFinished:
SKPaymentQueue
を購入しました。
アプリがさまざまな州からの購入を復元する方法をテストしています。
再現する簡単な手順:
- 支払いを追加して購入を完了します。キューはトランザクションを返す
SKPaymentTransactionStatePurchased
ため、アプリは機能を有効にし、トランザクションをキューでファイナライズします。 - 再購入できるように、購入に関する情報を削除します。(ユーザーがアプリを再インストールしたか、別のデバイスでアプリの使用を開始したと想像してください)
- もう一度アプリ内購入をお試しください。「これは既に購入済みです。[OK] をタップして、もう一度無料でダウンロードしてください。」を受け取ります。[OK] を押すと、キューから
SKPaymentTransactionStatePurchased
トランザクションが返されるため、アプリは機能を有効にし、キュー内のトランザクションを終了します。 - 購入に関する情報を再度削除します。
- もう一度アプリ内購入をお試しください。「このアプリ内購入は既に購入していますが、ダウンロードされていません。」というメッセージが表示されます。OK ボタンは 1 つしかなく、それを押す前に state のトランザクションを受け取ります
SKPaymentTransactionStateFailed
。アプリはトランザクションを終了しますが、トランザクションが失敗した場合、機能は有効になりません。 - 最後に、 で完了したトランザクションの復元を試み
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
ます。paymentQueueRestoreCompletedTransactionsFinished:
SKPaymentQueue
そして、空のtransactions
配列でオブザーバーに戻ります。
Apple Sandbox サーバーで何かが壊れているように感じます。トランザクションを正しく復元できません。それとも私は何か間違ったことをしていますか?