2011-12-14 3 views
10

私は自動再生可能なサブスクリプションを持つアプリを持っていますが、これらの購入は問題ありませんが、ユーザーがそのアプリを削除して後でサブスクリプションを復元しようとすると、期待していたデータiOS:SKPaymentTransactionStateRestored originalTransaction == nil

apple docsによれば、私はオリジナルトランザクションの詳細を最初のトランザクションの詳細、ほとんどの場合サンドボックスで受け取るべきですが、これはまさに私たちが私たちの元のトランザクション。

なぜ私はoriginalTransactionを受け取りませんか? [transaction transactionDate]に送り返された日付は、[[transaction originalTransaction] transactionDate]から期待されるものと同じですが、originalTransactionが[transaction transactionDate]が常に0であると仮定するのが安全かどうかはわかりません元のトランザクションの日付です。

+0

に置き換えコードは、ちょうどこの通過します。.. http://stackoverflow.com/questions/9537663/ios-how-to-get-a-list-すでにご購入済みの製品 –

答えて

1

私は全く同じ問題を抱えていました。元の取引が現在の取引を返すことがないかどうかをチェックすることで解決しました。

ここで私は- (void)restoreTransaction:(SKPaymentTransaction *)transaction

if (transaction.originalTransaction.payment.productIdentifier) { 
    [self provideContentForProductIdentifier:transaction.originalTransaction.payment.productIdentifier]; 
} else { 
    [self provideContentForProductIdentifier:transaction.payment.productIdentifier]; 
} 
+0

詳細をご説明いただけますか? – Gaurav

+0

@ Gauravakasparshテスト中に、元のトランザクションのいくつかについてサーバーがnillを返していたことがわかりました。これは、if条件を設定して、nillの場合は現在のトランザクションに置き換えました。 – Sam

+0

確認してくれてありがとう、私と同じことが起こっていました。 – Gaurav