3

したがって、基本的には、完了したトランザクションの復元がネットワーク/ iTunes固有の理由で失敗した場合にアラートを表示したいのですが、ユーザーがAppleID/パスワードプロンプトで[キャンセル]をタップした場合はアラートを表示しません。

私の実装では:

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

...私はerror.codeに対してテストしていますSKErrorPaymentCancelled(おそらく私もテストする必要がありますSKErrorPaymentNotAllowedが、それは今は関係ありません)。

それでも、「キャンセル」をタップすると、とにかくアラートが表示されました。NS-その値をログに記録すると、error.code == 0(つまりSKErrorUnknown)が示されました。

これは、iOS 4.3.1、Xcode 4.2、ビルド4C199(もちろんサンドボックスストア)で発生しています。

私は同様の質問をチェックしましたが、私の場合に何が起こっているのかはわかりません(つまり、私がすでに行っていることは正しい動作をもたらすはずです)...何かアイデアはありますか?

4

2 に答える 2

3

これらと照らし合わせてチェックしてください。十分なはずです。

// error codes for the SKErrorDomain
enum {
    SKErrorUnknown,
    SKErrorClientInvalid,       // client is not allowed to issue the request, etc.
    SKErrorPaymentCancelled,    // user cancelled the request, etc.
    SKErrorPaymentInvalid,      // purchase identifier was invalid, etc.
    SKErrorPaymentNotAllowed    // this device is not allowed to make the payment
};

https://stackoverflow.com/a/9017990/129202から。

したがって、error.code を切り替えて、コードが SKErrorPaymentCancelled でない場合にのみエラーを表示します。ユーザーはおそらくキャンセル ボタンを押したことを知っています (ユーザー/パスを入力するとき)。

したがってSKErrorPaymentCancelled、キャンセルをキャッチする必要があります。キャンセル ボタンが別のエラー コードをスローする場合、その iOS バージョンに問題がありますか?

于 2013-05-02T01:48:10.347 に答える