2013-03-15 1 views
10

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에만 국한되지 않습니다.

+0

paymentQueue : updatedTransactions : method는 어떻게 보이나요? 특히 트랜잭션 배열을 어떻게 트래버스합니까? – neoneye

답변

1

나는 다음과 같은 시나리오에서 전무 error가 발생했습니다 : 해당 장치의

  • 사용자 업데이트 아이폰 OS.

  • 업데이트 직후 사용자는 앱에 들어가서 구매하려고합니다. 대신 일반 구매 대화 상자의

  • , 그들이 얻을 아이튠즈 응용 프로그램로 리디렉션하고 표시하는 (또는 라인을 따라 뭔가) "서비스의 아이튠즈 용어가 변경되었습니다. 당신은 새로운 T & C의 동의해야" 새로운 T & C 's. 지불이 취소되고 무 error, 그리고 분명히 n은 error.localizedDescription이됩니다.

이 시나리오가 발생하려면 시스템 업데이트 후 사용자의 응용 프로그램이 iTunes Store와의 상호 작용의 첫 번째 지점이되어야합니다.