restorePurchases()を呼び出すと、非消耗com.premiumが復元されます。 IAPの購入の復元とIAPの購入を担当する機能は次のとおりです。これは、非消耗型IAPの問題に過ぎません。 購入に問題はありません。ユーザーがすでに持っているIAPを購入しようとすると、単に復元されます。これを見ていただきありがとうございます。IAPはまだ購入されていないときに復元されます
func restorePurchases() {
SKPaymentQueue.default().add(self)
SKPaymentQueue.default().restoreCompletedTransactions()
}
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
print("transactions restored")
for transaction in queue.transactions {
let t: SKPaymentTransaction = transaction
let prodID = t.payment.productIdentifier as String
print("starting restoring")
switch prodID {
case "com.premium":
print("restoring ads")
removeAds()
case "com.cash":
print("we dont restore coins")
case "com.level":
print("we dont restore levels")
default:
print("can't restore")
}
}
こちらも私の支払い待ちです。
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
print("add paymnet")
for transaction:AnyObject in transactions {
let trans = transaction as! SKPaymentTransaction
print(trans.error)
switch trans.transactionState {
case .purchased:
print("buying, ok unlock iap here")
print(p.productIdentifier)
let prodID = p.productIdentifier as String
switch prodID {
case "com.premium":
print("buying ads")
removeAds()
case "com.cash":
print("buying coins")
addCoins()
case "com.level":
print("buying levels")
addLevels()
default:
print("can't buy")
}
queue.finishTransaction(trans)
break;
case .failed:
print("buy error")
queue.finishTransaction(trans)
break;
default:
print("default")
break;
}
}
}
毎回新しいテストユーザーアカウントでテストしていますか? – brandonscript
@brandonscriptはい私は毎回新しいアカウントを使いました。 – james
「問題」であった元のコードが削除され、その回答が無効になったため、編集をロールバックしました。 – Paulw11