2017-11-14 3 views
0

ここでのユースケースは、ユーザーが自分のアプリ内購入を購入したことがなく、[復元]ボタンをタップしたことです。復元するものがないため、復元が失敗したことをユーザーに知らせたい。SKPaymentQueue restoreCompletedTransactionsの呼び出し、応答なし

問題は何も起こっていないということです。だから私は何かが起こったことを知らない。

私のユーザーは、私のインターフェイスにボタンを復元タップすると、その何が起こっていないされた後、私は、しかし

SKPaymentQueue.default().restoreCompletedTransactions 

を呼び出します。 SKPaymentTransactionObserver paymentQueue(_:updatedTransactions:)が呼び出されると期待していますが、そうではありません。

paymentQueue(_:restoreCompletedTransactionsFailedWithError:)を実装しようとしましたが、呼び出されていません。

答えて

0

あなたはとても近いです!あなたはこのSKPaymentTransactionObserverメソッドを実装する必要があります。

func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) { 
    // ... 
} 

デバイスは、App Storeでと通信することができた場合の方法は、restoreCompletedTransactions後に呼び出されていること - に関係なく、ユーザーが実際に復元する購入を持ってなかったので、復元が成功したかどうかの、ユーザーが復元を購入する必要がないために失敗しました。

残念ながら、ここでは何が起こったのかについての情報はありません。私はこれをStoreKitアーキテクチャの欠陥と見なします。

ただし、復元が成功した場合はpaymentQueue(_:updatedTransactions:)transactionStateとし、.restoredとします。おそらく、ユーザーがこの購入を行ったことを示すために、ある種のUserDefaults Bool(または同様のもの)を設定していると思われます。

の前には、paymentQueueRestoreCompletedTransactionsFinishedが呼び出されます。したがって、paymentQueueRestoreCompletedTransactionsFinishedでは、UserDefaults Boolが設定されているかどうかを調べることができます。そうでない場合は、おそらくユーザーが購入したことがないと推測できます。

これは推測ですが、それは何もありません。

関連する問題