17

を実装するクラスがありますSKPaymentTransactionObserver。ただし、購入ボタンをクリックしたときに、ユーザーがアプリストアにサインインしていない場合は、既存のIDを要求するか、新しいIDを作成するように求めるアラートが表示されます。これから使用クリックがキャンセルされた場合、またはその後のログインクレデンシャルアラートが発生した場合、そのキャンセルの通知は届きません。購入ボタンがクリックされた後の画面をカバーするアクティビティビューがあるので、ログインアラートがキャンセルされたかどうかを本当に知る必要があります。

私はすでにエラーコードSKErrorPaymentCancelledをテストしていますが、ログイン後に購入プロセスがキャンセルされた場合は機能します。デバイスでテストしています。

手がかりはありますか?

-アップデート-

申し訳ありませんが、これはトランザクションを復元しようとしたときにのみ発生し、その答えが明らかになりました。プロトコルに関する知識が不足しているためです。

4

4 に答える 4

37

ユーザーが購入の復元リクエストをキャンセルしようとした後にキャンセル イベントを検出するには、次のように実装します。

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
    // test error.code, if it equals SKErrorPaymentCancelled it's been cancelled
}
于 2013-02-06T05:00:46.280 に答える
0

ユーザーが Apple ID クレデンシャルを入力するプロンプトをキャンセルすると、トランザクションの状態は になりSKPaymentTransactionStateFailedます。ユーザーがプロセスを自発的に終了した場合、トランザクションは技術的に「失敗」していないため、これは混乱を招く可能性があります。transaction.error.codeユーザーが実際にプロセスを終了したかどうかを検出するには、( によってアクセスされた)トランザクション エラーのエラー コードが であるかどうかを確認しますSKErrorPaymentCancelled。そうでない場合、アプリは実際にトランザクションの処理に問題がありました。

于 2017-01-13T23:50:59.957 に答える