restoreCompletedTransactionsFailedWithError:取消时出现错误代码0(SKErrorUnknown)

时间:2012-07-18 08:18:30

标签: ios in-app-purchase

基本上,我希望在完成某些特定原因的情况下恢复已完成的交易失败时显示警告,但是当用户点击Apple ID /密码上的“取消”时,提示。

在我的实施中:

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

...我正在针对error.codeSKErrorPaymentCancelled进行测试(也许我也应该针对SKErrorPaymentNotAllowed进行测试,但这现在不相关了)。

然而,当点击'取消'时,警报显示无论如何。 NS-Logging其值显示error.code == 0(即SKErrorUnknown)。

这发生在iOS 4.3.1,Xcode 4.2,build 4C199(沙盒商店,当然)上。

我已经检查了类似的问题,但回答的是我的情况不会发生什么(也就是说,我已经在做的事情应该产生正确的行为)......任何想法?

2 个答案:

答案 0 :(得分: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版本有问题吗?

答案 1 :(得分:3)

我发现在iOS模拟器上,取消失败,错误代码为0(SKErrorPaymentCancelled)。但是如果你在设备上运行它,它会正确返回<router-view class="bounce" v-transition="bounce" transition-mode="out-in"></router-view> 。这似乎也适用于iOS 9。