10

Store Kit を使用するのはこれが初めてで、購入を復元しようとするまではすべてうまくいきました。同様の問題に関するスタック オーバーフローに関する他の投稿をいくつか見ましたが、自分に合った解決策が見つかりませんでした。

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

その後購入しようとすると、すでに購入済みであることが通知されます。これは、私のテスト Apple ID が前回の試行で購入に成功したことをストアが認識していることを示しています。では、なぜそのpaymentQueueRestoreCompletedTransactionsFinished:キューに空のトランザクション コレクションが返されるのでしょうか?

サンドボックスが不規則に動作するという言及がいくつかありましたが、AppStore に公開する前にこれが機能することを確認する必要があります.

何か案は?何か不足していますか?

前もって感謝します。

4

4 に答える 4

9

Are you handling the transactions in -paymentQueue:updatedTransactions:? This callback gets your restored transactions before the paymentQueueRestoreCompletedTransactionsFinished: callback.

You should do your restore processing and handling inside -paymentQueue:updatedTransactions:.

于 2012-05-16T13:15:33.663 に答える
8

これはサンドボックス App Store のバグだと思います。私の復元は、テスト アカウント (iOS 5.0 時代に作成されたもの) では機能しませんでした。-paymentQueue:updatedTransactions:復元中に呼び出されませんでした。

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

于 2012-12-06T05:08:50.157 に答える
0

どの製品がキューに戻されるかは、製品タイプによって異なります。

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

別の方法として、次の場所で領収書をお読みください。

[[NSBundle mainBundle] appStoreReceiptURL]

領収書の唯一の問題は、領収書がローカルに保存されていることですが、アップルはそれをハングさせたままにしません..もちろん、購入はアップルサーバーにも保存されます。次の方法でレシートを更新/ロードします。

    SKReceiptRefreshRequest *recreq = [[SKReceiptRefreshRequest alloc] init];
[recreq start];
于 2015-02-04T12:49:32.553 に答える