2012-05-11 12 views
9

これは初めてのStore Kitを使用したもので、購入を復元しようとするまですべてが上がっています。私は同様の問題についてスタックオーバーフローに関するいくつかの他の投稿を見たことがありますが、私にとってはうまくいく解決策が見つかりませんでした。paymentQueueRestoreCompletedTransactionsFinished:トランザクションが必要なときに空のキューを返しています

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]を呼び出すボタンがアプリにあります。これにより、SKPaymentTransactionObserverメソッドpaymentQueueRestoreCompletedTransactionsFinished:がトリガーされます。問題は、paymentQueueRestoreCompletedTransactionsFinished:が返されたキュー内のトランザクションがゼロであることです。

私が購入しようとすると、私はすでに購入をしたことが通知されます。これは、私のテストApple IDが以前の試みで購入を成功させたことを店が知っていることを示しています。それで、なぜpaymentQueueRestoreCompletedTransactionsFinished:は空のトランザクションコレクションをキューに戻すのですか?

サンドボックスが不安定に動作しているとの記載がありますが、私がAppStoreを使用する前にこの動作を確認する必要があります。

アイデア?何か不足していますか?

ありがとうございます。

答えて

8

-paymentQueue:updatedTransactions:でトランザクションを処理していますか?このコールバックは、paymentQueueRestoreCompletedTransactionsFinished:コールバックの前に復元されたトランザクションを取得します。

-paymentQueue:updatedTransactions:の中で復元処理と処理を行う必要があります。

+6

両方の方法でリストアを処理しています。最も奇妙なことが私の問題を解決した。私はitun​​esconnectで新しいテストユーザーを作成し、新しいユーザーは期待どおりに動作します。何らかの理由で私の最初のテストユーザーは購入を復元できません。 – process255

+0

それは戸惑う。現実世界の口座がこのように行動しないことを願っています。 – Hyperbole

+0

私は同じことを経験しました。 2日間私の髪を引っ張っていた、私が使っていたテストユーザーと何か悪い間違ったことが判明した。新しいテストユーザーを作成し、次にそのすべてのユーザーを作成します。 – Dermot

7

これはSandbox App Storeのバグだと思います。復元したものがテストアカウント(iOS 5.0時代に作成されたもの)で動作しませんでした。復元中に-paymentQueue:updatedTransactions:が呼び出されていませんでした。

process255のコメントでは、iTunes Connectで新しいテストユーザーを作成しました。新しいテストアカウントでは、すべて正常に動作します。

0

それは製品はバックキューに入れされる製品の種類依存:代替として

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 

、領収書を読んで:領収書と

[[NSBundle mainBundle] appStoreReceiptURL] 

唯一の問題です彼らはローカルに格納されているが、リンゴはそれを吊るしていません。もちろん、購入はリンゴサーバーにも保存されています。領収書を更新/ロードする方法は次のとおりです。

SKReceiptRefreshRequest *recreq = [[SKReceiptRefreshRequest alloc] init]; 
[recreq start]; 
関連する問題