0
我的應用程序中有4個非消耗品,並且購買這些作品時沒有任何問題。Swift IAP restoreCompletedTransactions可恢復非購買的物品
但是,我創建了一個restorePurchases按鈕,可以恢復所有產品,無論用戶是否購買了它們。我已經在4個不同的沙箱測試用戶上測試了這個結果,結果是一致的(即對於從未購買非易耗品的測試用戶,點擊'還原'恢復所有產品)
我的還原代碼如下所示:
@IBAction func restorePurchases(sender: UIButton) {
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
}
func paymentQueueRestoreCompletedTransactionsFinished(queue: SKPaymentQueue) {
print("transactions restored")
for transaction in queue.transactions {
let t: SKPaymentTransaction = transaction
let prodID = t.payment.productIdentifier as String
switch prodID {
case "productAbc1":
defaults.setBool(true , forKey: "productAbc1")
case "productAbc2":
defaults.setBool(true , forKey: "productAbc2")
case "productAbc3":
defaults.setBool(true , forKey: "productAbc3")
case "productAbc3":
defaults.setBool(true , forKey: "productAbc4")
default:
print("IAP not setup; enable it")
}
}
}
我是否需要檢查paymentQueueRestoreCompletedTransactionsFinished中的其他參數?將我的代碼與許多其他類似問題/ IAP示例進行比較,它看起來幾乎相同。這是沙盒環境還是代碼問題?
您是否嘗試過打印出這些事務以查看實際包含的內容? – sschale
根據我恢復的測試用戶,控制檯打印多個每個prodID(每個prodID 5到15) - 即使是以前沒有購買過任何東西的全新測試用戶... –
Ahhh man。當我輸入這個響應時,它發現我......我根本沒有在每個案例中包含'queue.finishTransaction(transaction)'......現在全部排序!感謝您幫助我獲得齒輪研磨:) .... –