2013-04-13 37 views
0

我在應用程序購買的iTunes沙箱環境測試。我使用在iTunes Connect中創建的測試用戶,購買代碼工作正常。 現在我正在測試恢復事務。 這是代碼的恢復:iOS:已恢復的交易繼續到達沙箱

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

一旦執行此代碼後,我每次重新啓動應用程序,我註冊的代碼TransactionObserver:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

問我輸入密碼用於測試還原的最後一個用戶的數量。它的交易每次都會返回給我。 因此,無法在「未購買」狀態下測試應用程序。 我已經嘗試註銷該用戶並以非測試用戶身份登錄,但它不會更改,我總是被要求輸入的密碼,即測試用戶。

回答

2

我終於發現了問題:當觀察者在法

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

接收的恢復的事務我正在處理它,並調用

[[SKPaymentQueue defaultQueue] finishTransaction:transaction.originalTransaction]; 

是我所需要的問題還要求

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

對容器交易本身。錯過了,沙箱一遍又一遍地發送給我同樣的事務,因爲我從未確認收到它!

+0

原始交易用於信息使用。你總是與實際交易一起工作。這就是爲什麼你必須完成實際交易,而不是原來的交易(完成原來的交易沒有意義)。 –

1

首先,您在沙箱環境中只能由測試用戶使用。因此,請重新創建新的測試用戶。 (您可以創建不存在的郵件地址的測試用戶,它是確定測試;))

我想你保存你的國家購買到NSUserDefaults的,所以新用戶來測試和達到的不是情況購買,您應該刪除應用程序並再次運行它。

祝你好運!

+0

謝謝你的回答,其實我已經找到了問題並回答了(下面),但我忘了將它標記爲已接受的答案。我鼓勵你作爲謝謝你回答:) – hariseldon78

+0

好聽,你解決了它。謝謝:) –