2013-12-17 122 views
0

我正在購買應用程序(非消費品),當我購買時彈出一個警報視圖,顯示「已購買物品但尚未下載」和交易失敗。即使重新啓動Xcode並關閉/打開設備,它仍然是相同的。我有一個恢復按鈕,通過點擊我可以恢復項目。在購買時出現應用購買錯誤

攻恢復後,它會調用paymentQueueRestoreCompletedTransactionsFinished

- (IBAction)Restore:(id)sender { 
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 


} 
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 
    [self UnlockPurchase]; 
} 

但這從來就沒有到下面的方法:

case SKPaymentTransactionStateRestored: 
       NSLog(@"Restored "); 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
       break; 

當我與其他測試用戶的測試帳號上述功能SKPaymentTransactionStateRestored被稱爲我有沒有問題當我恢復。 我在兩臺設備上測試過,我在運行iOS 7的iPhone 5中沒有問題。但是在iPhone 4(iOS 6)中運行時,彈出警報視圖以進行登錄(測試用戶永遠不會進入SKPaymentTransactionStateRestored)我猜這是因爲未完成的交易,但我使用它的這個測試用戶帳戶永遠不會進入SKPaymentTransactionStateRestored(其他帳戶進入)。如何擺脫該登錄警報自動發生?只有當我在iPhone 4中測試時纔會出現問題!這是因爲未完成的交易或測試用戶帳戶問題或其他?我沒有線索請幫忙!

+0

不幸的是在沙箱模式下測試時,存儲盒是衆所周知的不準確的。蘋果工程師甚至承認這一點。可悲的是,在過去的幾年裏,當我在商店工具包代碼處於合理的階段時,它的工作起來很有意義,而且通常測試進行得很順利,那麼我認爲它很好,然後繼續前進。不知怎麼,我沒有任何問題。 –

+0

我可能從來沒有在意這個特定的用戶帳戶導致我的問題,但當我使用我的應用程序時,彈出一個登錄提醒。這就是一件事毀了我@GuyKogus –

回答

0

你什麼時候打電話removeTransactionObserver

在過去,我遇到了一個問題,那就是我太早拆除觀察者,而且它正在創建積壓的未完成採購,並且一次只能完成一件。

我固定它通過移動removeTransactionObserver調用dealloc

+0

是的我已經在我的購買視圖控制器中這樣做了' - (void)dealloc {[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; }' –