Mat*_*636 10 storekit in-app-purchase
我们有一个购买IAP硬币的应用程序.我们最近收到了一些用户的邮件,说他们无法购买任何硬币.我查看了他们的会话日志并看到了失败的IAP事件,每个事件都没有记录失败原因.这是相关的代码:
- (void)_purchaseRequestFailed:(SKPaymentTransaction *)transaction state:(StoreTransactionState)state error:(NSError *)error
{
IAPProduct *product = [self getProductWithId:transaction.payment.productIdentifier];
if (error.code==SKErrorPaymentCancelled) {
[_metricsManager logFailIAP:product failReason:@"Payment canceled"];
} else {
[_metricsManager logFailIAP:product failReason:error.localizedDescription];
}
if ([_delegate respondsToSelector:@selector(didSucceedPurchasingProduct:)]) {
[_delegate didFailPurchasingProduct:product];
}
}
Run Code Online (Sandbox Code Playgroud)
在logFailIAP中,我记录时间,UDID,事件名称和error.localizedDescription之类的内容.
if (failReason != nil && failReason.length > 0) {
[metricsDictionary setObject:failReason forKey:MetricsEventParameterFailReason];
}
Run Code Online (Sandbox Code Playgroud)
在日志中,我收到了失败的IAP事件,但没有记录失败的原因.是否有任何情况,你得到"SKPaymentTransactionStateFailed",但是,有一个空的error.localizedDescription?我可以确认日志有效,并且在其他设备中看到"付款已取消"和"无法连接到iTunes"等错误.该问题并非特定于设备或iOS.
error我在以下场景中遇到过 nil :
用户在其设备上更新 iOS。
更新后,用户立即进入您的应用程序并尝试进行购买。
他们收到的不是通常的购买对话框,而是“iTunes 服务条款已更改。您需要接受新的条款和条件”(或类似内容),这会将他们重定向到 iTunes 应用程序并向他们显示新的条款和条件。然后付款被取消,你会得到一个 nil error,显然,一个 nil error.localizedDescription。
要发生这种情况,您的应用程序需要成为系统更新后用户与 iTunes Store 的第一个交互点。
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |