我收到消息了
“您已经购买了此商品,是否要再次购买”
即使用户是第一次购买。
广告最终被删除了,但上面的信息让用户感到困惑。
SKPaymentQueue.default().add(self)
在AppDelegate中的Firebase语句之前
FirebaseApp.configure()
但是如果
SKPaymentQueue.default().add(self)
这是AppDelegate类。
2) 我发表了评论
FirebaseApp.configure()
读取之后,Firebase还添加了自己的TransactionObserver。但这也不管用。
3) 我把
在游戏场景类中
sceneDidLoad()
但这并没有解决问题。
4) 我有
queue.finishTransaction(transaction)
在func paymentQueue函数中
SKPaymentTransactionState公司
国家。
使用沙盒应用程序中使用的代码更新:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
btnRemoveBannerAds.isEnabled = false
SKPaymentQueue.default().add(self)
getPurchaseInfo()
}
@IBAction func removeBannerAds(_ sender: UIButton) {
let skPayment = SKPayment(product: skProduct!)
SKPaymentQueue.default().add(skPayment)
}
extension PurchaseViewController : SKPaymentTransactionObserver, SKProductsRequestDelegate {
func getPurchaseInfo() {
if SKPaymentQueue.canMakePayments() {
let request = SKProductsRequest(productIdentifiers: NSSet(objects: self.productID) as! Set<String>) // dont understand this?
request.delegate = self
request.start()
} else {
print("In App purchase not enabled")
}
}
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
var products = response.products
if products.count == 0 {
print("Product not found")
} else {
skProduct = products[0]
print("product is \(String(describing: skProduct))")
btnRemoveBannerAds.isEnabled = true
}
let invalids = response.invalidProductIdentifiers
for product in invalids {
print("Product not found \(product)")
}
}
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case SKPaymentTransactionState.purchased:
SKPaymentQueue.default().finishTransaction(transaction)
btnRemoveBannerAds.isEnabled = false
userPref.setValue(true, forKey: "AdRemovalPurchase")
userPref.synchronize()
case SKPaymentTransactionState.restored:
SKPaymentQueue.default().finishTransaction(transaction)
btnRemoveBannerAds.isEnabled = false
userPref.setValue(true, forKey: "AdRemovalPurchase")
userPref.synchronize()
case SKPaymentTransactionState.failed:
SKPaymentQueue.default().finishTransaction(transaction)
btnRemoveBannerAds.isEnabled = false
default:
break
}
}
}
}
请告知如何实施。谢谢您。