私は、IAPコイン購入のアプリを持っています。最近、いくつかのユーザーからコインを購入できなかったというメールを受け取りました。私はセッションログを見て失敗したIAPイベントを見ました。失敗した理由は記録されていませんでした。ここでは、関連するコードです:logFailIAP内部SKPaymentTransactionStateFailed、NSErrorなし
- (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];
}
}
、私は時間のようなものをログに記録し、UDID、イベント名、およびerror.localizedDescription。
if (failReason != nil && failReason.length > 0) {
[metricsDictionary setObject:failReason forKey:MetricsEventParameterFailReason];
}
ログにはIAPイベントが失敗していますが、ログに失敗した理由はありません。あなたが "SKPaymentTransactionStateFailed"を取得する場合はありますか?しかし、空のerror.localizedDescriptionがありますか?ログが正常に機能していることを確認して、「支払いのキャンセル」や「iTunesに接続できません」などのエラーが他のデバイスに記録されていることが確認できました。この問題は、端末やiOSに固有の問題ではありません。
paymentQueue:updatedTransactions:メソッドはどのように見えますか?特にトランザクション配列をどのようにトラバースしますか? – neoneye