2013-05-28 1 views
2

어디서나 다운로드가 실패하고 내 앱이 실패 할 때 트랜잭션을 완료하는 경우가 있습니다. 그러나 트랜잭션을 완료하면 Store Kit이 실패한 다운로드를 다시 시작하지 못합니다. 또한 다운로드가 실패하면 Store Kit에서 자동으로 콘텐츠 다운로드를 다시 시도하지 않으며 다운로드를 실행할 수있는 방법도없는 것처럼 보입니다.Apple에서 인앱 구매 콘텐츠 다운로드를 호스팅하지 못하면 어떻게해야합니까?

누군가 이런 경우에해야 할 일이 무엇인지 알아 냈습니까? 모든 권장 사항을 무시하고 컨텐츠가 완전히 다운로드되어 설치 될 때까지 트랜잭션을 완료하지 않습니까?

프로그래밍 방식으로 트랜잭션을 복원하고 다른 모든 제품 식별자를 무시해야합니까?

+0

구매를 복원 해 보셨습니까? 나는 그것이 일해야만하길 바란다. – KingofBliss

+0

당신이 말했듯이, 나는 이것을 현재하고 있습니다. 다운로드가 완료 될 때까지 트랜잭션을 완료하지 않습니다. 또한 앱 내에서 다운로드가 완료되고 다운로드 한 파일이 문서 폴더에 복사 될 때까지 제품을 구입 한 것으로 표시하지 않습니다. 제품을 구매 한 것처럼 보이면 문제가 많이 발생하지만 콘텐츠를 구매하지 않으면 문제가 발생합니다. – Jonny

답변

1

당신은 앱에서이 방법을 통해 구매를 복원 버튼을 추가 할 수 있습니다 : -

//inside of an IBaction 
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 


// Then this is called 
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 
NSLog(@"%@",queue); 
NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]); 

NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init]; 
NSLog(@"received restored transactions: %i", queue.transactions.count); 

for (SKPaymentTransaction *transaction in queue.transactions) { 
    NSString *productID = transaction.payment.productIdentifier; 
    [purchasedItemIDs addObject:productID]; 
    NSLog (@"product id is %@" , productID); 
    // here put an if/then statement to write files based on previously purchased items 
    // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry} 
    } 
} 

또는

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

희망이 당신을 도와 ...!

+0

내 앱에서 이미이 모든 작업을 수행합니다. 그러나 거래를 복원하는 것은 사용자가 조치를 취하는 것이 목적입니다. 예를 들어 이미 구입 한 항목이있는 앱을 새로 설치 한 경우입니다. 다운로드가 완료 될 때까지 실패한 다운로드를 자동으로 다시 다운로드하려고합니다. – openfrog

+0

이 사람은 호스팅 된 콘텐츠를 사용하는 것을 완전히 놓쳤습니다. 나는 너와 같은 질문을하고있다. – Jonny