7

このチュートリアルに基づいてアプリ内購入を実装しました。私が経験した問題は、StoreKit フレームワークの一部である「アプリ内購入の確認」アラートで[キャンセル] ボタンが押されたことを検出できないことです。

一部の情報源は、キャンセルが押されたときに呼び出されることを示唆して-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactionsいますが、私の場合は決して実行されません。私のセットアップは、SKProductRequestDelegate および SKPaymentTransactionObserver に準拠する IAPManager:NSObject クラスをインポートする ViewController です。製品は正常にリクエストされていますが、トランザクション オブザーバーが を呼び出していませんpaymentQueue

キャンセルボタンを検出できるようにするにはどうすればよいですか?

4

3 に答える 3

13

デリゲート メソッドでは、ユーザーがキャンセルした場合、チュートリアルの failedtransaction は何もしません。しかし、そのように追加できます。

- (void)failedTransaction:(SKPaymentTransaction *)transaction
{
    if (transaction.error.code != SKErrorPaymentCancelled)
    {
        // error!
          NSLog(@"Something went Wrong!");
        [self finishTransaction:transaction wasSuccessful:NO];
          NSLog(@"transaction error :%@", transaction.error.localizedDescription);
    }
    else
    {
          NSLog(@"Cancelled");
        // this is fine, the user just cancelled
        [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    }
}
于 2013-03-14T17:03:42.300 に答える
1

機能させるには、次の行を追加する必要がありました。

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

ご協力ありがとうございます。

于 2013-03-14T19:26:37.980 に答える
0

私はStoreKitを使用していませんが、ユーザーがキャンセルSKRequestDelegateするとメッセージが表示されると思います。request:didFailWithError:

于 2013-03-14T16:45:01.243 に答える