2014-09-23 76 views
0

我遇到了一個問題,它允許我下載蘋果託管內容或finishTransaction,但不是兩者;無法完成應用程序購買時的交易

#pragma mark - 
#pragma mark SKPaymentTransactionObserver methods 

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray  *)transactions 
{ 
for (SKPaymentTransaction *transaction in transactions) 
{ 

    switch (transaction.transactionState) 
    { 
     case SKPaymentTransactionStatePurchasing: 

       NSLog(@"Purchasing"); 

      break; 

     case SKPaymentTransactionStatePurchased: 

      NSLog(@"Transaction State Purchased"); 

      [[SKPaymentQueue defaultQueue]startDownloads:transaction.downloads]; 




      break; 

     case SKPaymentTransactionStateFailed: 

      NSLog(@"Transaction State Failed"); 

      [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
      [[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; 

      [self failedTransaction:transaction]; 

      break; 

     case SKPaymentTransactionStateRestored: 

      NSLog(@"Transaction State Restored"); 

      [[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads]; 
      buyButton.enabled = NO; 
      [buyButton setTitle:@"Purchased" 
         forState:UIControlStateDisabled]; 

      //break; 
     default: 
      break; 

    } 
} 
} 


- (void)paymentQueue:(SKPaymentQueue *)queue updatedDownloads:(NSArray *)downloads; 
{ 
for (SKDownload *download in downloads) { 

    switch (download.downloadState) { 

     case SKDownloadStateFinished: 

      NSLog(@"Completing transaction-B"); 

      [self processDownload:download]; 
      [queue finishTransaction:download.transaction]; 
      [[SKPaymentQueue defaultQueue] finishTransaction:download.transaction]; 
      [[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; 

     break; 

     case SKDownloadStateActive: 


      NSLog(@"%f", download.progress); 
      NSLog(@"%f remaining", download.timeRemaining); 

     break; 

     default: 
     break; 


    } 

} 
} 

-(void)completeTransaction:(SKPaymentTransaction *)transaction 
{ //checked!! 

NSLog(@"Complete transaction"); 

//[[SKPaymentQueue defaultQueue]finishTransaction:transaction]; 
buyButton.enabled = NO; 
[buyButton setTitle:@"Purchased" 
      forState:UIControlStateDisabled]; 
} 

通常代碼工作正常; 產品顯示 我可以選擇購買 登錄請求

然後按上面的下載作品的代碼和被處理(移動到文件目錄)。

但是,如果我在updatedTransactions中完成了事務處理,那麼下載將不會發生。 (有意義!)

如果我調用[self completeTransaction:transaction] to completionTransaction from updatedTransactions我得到了相同的結果。

如果我忽略調用completeTransaction(根據代碼),然後下載內容,但我似乎無法調用完成事務。

在哪裏/如何叫完成交易?

這麼近,但到目前爲止!

回答

0

我打電話過完成交易太早,我的下載無法完成。

相關問題