2011-07-28 1 views
1

몇 가지 비 소모품 inApps가 있습니다. 다음 인앱의 다운로드가 제대로 이루어집니다 : (SKPaymentTransactionStatePurchased 제대로) (완성)와 트랜잭션이 대기열에 남아 있지만 finnaly 난 ... 왜finishTransaction : 대기열에서 트랜잭션을 제거하지 않습니다 ...

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

전화

지불 한 번 완료 ? 그들은 제거되지 않아야하지 않습니까? 또한 다음과 같은 호출되지 않는 :

은 (경우에 내가 끝까지 노력했다 트랜잭션 객체가
for (SKPaymentTransaction *aTransaction in [[SKPaymentQueue defaultQueue] transactions]) 
{ 
    [[SKPaymentQueue defaultQueue] finishTransaction:aTransaction]; 
} 

했다하지 :

- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions 

나는 또한 내 finishtransaction 방법에 구현하려고했습니다 이 중 하나를 수정하십시오. 그러나 이것은 트랜잭션을 제거하지 못합니다. 대부분의 경우 가끔은 제거하지만 동작이 일관성이 없기 때문에 제거 된 이유는 실제로 제거되지 않습니다.)

답변

4

귀하의 질문에, 당신이하려고하는 것으로 나타납니다 구매가 완료되면 무언가를 wnload. 이 경우 다운로드가 시작되기 전에 finishTransaction을 호출해야합니다.

+0

정확히 "해결 방법"이었습니다. 아니면 적절한 방법입니까? 제품이 사용자에게 전달 된 후 문서에 finishtransaction 호출이 나와 있습니다. 즉시 호출하는 것이 나에게 유리합니다. – xfze

+0

제품을 구입했지만 아직 다운로드하지 않았 음을 기억하고 종료 트랜잭션을 호출해야합니다. 백그라운드 스레드에서 아직 다운로드하지 않은 구입 한 제품의 컨텐츠를 다운로드하십시오. 이유는 앱이 5 번째 제품에서 3 번째로 다운로드 될 때 앱을 종료 할 수 있기 때문입니다. 다운로드를 재개하는 것은 금융 거래와 관련되어 있기 때문에 중요합니다. – Mugunth

+0

@Mugunth MSStoreKit을 사용하고 있으며 플래그가 설정된 간단한 비 소모품으로이 문제가 발생했습니다. MSStoreKit은 트랜잭션의이 문제에 대한 조항을 완료하지 않고 큐에서 제거하지 않습니까? failedTransactions에 대한 호출을 중심으로 dispatch_async를 사용하라는 제안을 보았지만 그 방법이 맞는지 확실하지 않습니다. MSStoreKit이이를 처리하도록 업데이트 된 것을보고 싶습니다. – SAHM