Mamy aplikację z zakupami monet IAP. Niedawno otrzymaliśmy e-maile od kilku naszych użytkowników, którzy twierdzili, że nie mogli kupić monet. Przyjrzałem się dziennikom sesji i zobaczyłem zdarzenia niepowodzenia IAP, z których każdy nie został zarejestrowany z powodu niepowodzenia. Tutaj jest związany kod:SKPaymentTransactionStateFailed, ale nie 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];
}
}
wewnątrz logFailIAP, mam rzeczy jak log czasie UDID, nazwa zdarzenia, a error.localizedDescription.
if (failReason != nil && failReason.length > 0) {
[metricsDictionary setObject:failReason forKey:MetricsEventParameterFailReason];
}
W dziennikach są wyświetlane zdarzenia niepowodzeń IAP, ale nie zgłoszono przyczyny niepowodzenia. Czy jest jakikolwiek przypadek, w którym pojawi się "SKPaymentTransactionStateFailed", ale masz pusty error.localizedDescription? Mogę potwierdzić, że logi działają i widziałem błędy takie jak "Płatność anulowana" i "Nie można połączyć się z iTunes", które były rejestrowane w innych urządzeniach. Ten problem nie dotyczy tylko urządzenia lub systemu iOS.
Jak wygląda Twoja metoda paymentQueue: updatedTransactions: method. Szczególnie w jaki sposób przechodzisz przez tablicę transakcji. – neoneye