2011-07-28 43 views
1

我有幾個非易耗品inApps。finishTransaction:不會從隊列中刪除事務...

付款是做一次(正常:SKPaymentTransactionStatePurchased),然後將應用程式內的下載做正確(及成品)和finnaly我打電話

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

但交易仍然在隊列中......爲什麼?他們是不是應該被刪除?還有以下不被稱爲:

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

我也試過在我finishtransaction方法來實現:

for (SKPaymentTransaction *aTransaction in [[SKPaymentQueue defaultQueue] transactions]) 
{ 
    [[SKPaymentQueue defaultQueue] finishTransaction:aTransaction]; 
} 

(如果交易對象我試圖成績是不是正確的一個,但這也無法消除交易 - 很多時候,有時它確實刪除但行爲不一致,我不明白爲什麼他們被刪除了幾次實際刪除)

回答

4

從你的問題看來,你似乎正在努力去做購買完成後下載一些東西。在這種情況下,您應該在下載開始之前調用finishTransaction。

+0

這正是我的「解決方法」。或者這是正確的方式?文檔說在產品交付給用戶之後調用finishtransaction。立即調用它對我來說工作方式更好,儘管 – xfze

+0

您應該「記住」該產品已被購買並且尚未下載,然後致電完成交易。在後臺線程中,下載任何尚未下載的購買產品的內容。原因是,您的應用可能會在下載5th產品中的第3個時關閉。恢復下載很重要,因爲它與金融交易掛鉤 – Mugunth

+0

@Mugunth我正在使用您的MSStoreKit,並且在設置了標誌的情況下出現了一個簡單的非消耗品的問題。 MSStoreKit是否爲這個交易未完成並從隊列中移除的問題做出規定?我已經看到了一個關於使用dispatch_async來調用failedTransactions的建議,但我不確定這是否可行。我很想看到MSStoreKit更新來處理這個問題。 – SAHM