2011-12-14 1 views
10

자동 갱신 구독이있는 앱을 보유하고 있지만 구매는 괜찮습니다. 그러나 사용자가 앱을 삭제하고 나중에 구독 복원을 시도하면 다시 돌아올 수 없습니다. 기대하는 데이터.iOS : SKPaymentTransactionStateRestored originalTransaction == nil

apple docs에 따르면 원래 트랜잭션의 세부 정보와 함께 대부분의 경우 샌드 박스를 받아야하며 이는 샌드 박스에서 일어난 일입니다. 그러나 고객의 일부 앱에서 발생하는 상황과 정확히 일치합니다. originalTransaction.

누구나 왜 originalTransaction을받지 못하게 될지 생각할 수 있습니까? [transaction transactionDate]에 다시 전송 된 날짜는 [[transaction originalTransaction] transactionDate]에서 예상 한 것과 동일하지만 originalTransaction이 [transaction transactionDate]가 항상 0이 될 것이라고 가정하는 것이 안전한지 여부는 알지 못합니다 originalTransaction의 날짜가되어야합니다.

+0

그냥이 통과 내가 - (void)restoreTransaction:(SKPaymentTransaction *)transaction 대체하는 코드입니다 .. http://stackoverflow.com/questions/9537663/ios-how-to-get-a-list- 이미 구입 한 제품 –

답변

1

나는 똑같은 문제가있었습니다. 원래 트랜잭션이 현재 트랜잭션을 반환하지 않는지 확인하여 해결했습니다. 여기

if (transaction.originalTransaction.payment.productIdentifier) { 
    [self provideContentForProductIdentifier:transaction.originalTransaction.payment.productIdentifier]; 
} else { 
    [self provideContentForProductIdentifier:transaction.payment.productIdentifier]; 
} 
+0

자세히 설명해 주시겠습니까? – Gaurav

+0

@ Gauravakasparsh 테스트하는 동안 서버가 원래 거래 중 일부에 대해 nill을 반환한다는 것을 발견했습니다. if 조건을 배치하고 해당 조건이 nill 인 경우 현재 트랜잭션으로 대체했기 때문입니다. – Sam

+0

확인해 주셔서 감사합니다. 나와 같은 일이 일어나고 있습니다. 아무렇게나 처리하여 해결했습니다. – Gaurav