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];
}
}
logFailIAP内に、時間、UDID、イベント名、error.localizedDescriptionなどをログに記録します。
if (failReason != nil && failReason.length > 0) {
[metricsDictionary setObject:failReason forKey:MetricsEventParameterFailReason];
}
ログにFailedIAPイベントが表示されますが、失敗の理由はログに記録されません。「SKPaymentTransactionStateFailed」が表示されても、error.localizedDescriptionが空になる場合はありますか?ログが機能していることを確認でき、「支払いがキャンセルされました」、「iTunesに接続できません」などのエラーが他のデバイスに記録されています。この問題は、デバイスまたはiOSに固有のものではありません。