1

サンドボックス環境でアプリ内購入をテスト中です。「restoreCompletedTransactions」のプロセスを開始すると、テストユーザーのパスワードを入力するように求めるダイアログが表示されます。その段階でキャンセルを押すだけでは、プロセスがキャンセルされたというフィードバックは得られません。

助言がありますか

レザ

4

3 に答える 3

7

購入方法の復元をキャンセルした場合paymentQueue:restoreCompletedTransactionsFailedWithError:は、支払いトランザクションオブザーバーで呼び出される必要があります。

于 2012-09-10T12:17:21.713 に答える
0

ユーザーがキャンセルボタンをクリックすると、リクエストは失敗します-そのようなストアオブザーバーを使用してください...

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

そして、このように処理します。

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
            default:
                break;
        }
    }
}
于 2012-09-10T12:20:23.117 に答える
0

ユーザーがキャンセルボタンを押すと、このメソッドが呼び出されるので、適切なメッセージを配置します。

- (void)failedTransaction:(SKPaymentTransaction *)transaction {
     [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
      }
    if (transaction.error.code != SKErrorPaymentCancelled)
     {
    NSLog(@"Transaction error: %@", transaction.error.localizedDescription);
      }


- (void)paymentQueue:(SKPaymentQueue   *)queuerestoreCompletedTransactionsFailedWithError:(NSError *)error {
       NSLog(@"%s","User Cancel.");
      }
于 2014-08-28T10:16:08.730 に答える