2013-03-15 18 views
10

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.

+0

Jak wygląda Twoja metoda paymentQueue: updatedTransactions: method. Szczególnie w jaki sposób przechodzisz przez tablicę transakcji. – neoneye

Odpowiedz

1

Mam napotkał nil error w następującym scenariuszu:

  • aktualizacje użytkowników iOS na swoim urządzeniu.

  • Natychmiast po aktualizacji użytkownik wchodzi do aplikacji i próbuje dokonać zakupu.

  • Zamiast dialogu zakup zwykłego, oni uzyskać „iTunes Warunki korzystania z usługi zostały zmienione. Musisz zaakceptować nowy T & C” (czy coś wzdłuż linii), który przekierowuje je do aplikacji iTunes i pokazuje je nowe T & C's. Płatność zostanie anulowana, a otrzymasz zero error i, oczywiście, zero error.localizedDescription.

W tym scenariuszu aplikacja musi być pierwszym punktem kontaktu użytkownika ze sklepem iTunes Store po aktualizacji systemu.

Powiązane problemy