エラー メッセージが表示され続けます (Type StoreViewController
does not conform to protocol SKPaymentTransactionObserver
) コードを何度か見直しました。おそらく、私は一連の新鮮な目を必要としているか、コーディングに実際に何か問題がある可能性が高いと感じています。
エラーの数を 1 つに減らすために、コードの最後に多数の右中括弧を追加する必要がありました。しかし、その後、試してみると再び上昇します。したがって、中括弧の問題ではないかもしれません。
解決策を手伝っていただくか、エラーを見つけてください。(エックスコード 9.3)
import UIKit
import StoreKit
class StoreViewController: UIViewController , SKPaymentTransactionObserver , SKProductsRequestDelegate {
@IBOutlet weak var storeLabel: UILabel!
@IBOutlet weak var infoLabel: UILabel!
@IBOutlet weak var buyButton: UIButton!
@IBOutlet weak var cancelButton: UIButton!
var product: SKProduct?
var productID = "com.Haleemani.SilkyDragon.removeads"
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func dimissView(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
@IBAction func purchase(_ sender: Any) {
let payment = SKPayment(product: product!)
SKPaymentQueue.default().add(payment)
}
func getPurchaseInfo() {
if SKPaymentQueue.canMakePayments() {
let request = SKProductsRequest(productIdentifiers: NSSet(objects: self.productID) as! Set<String>)
request.delegate = self
request.start()
} else {
storeLabel.text = "Unsuccessful"
infoLabel.text = "Check your settings and try again"
}
}
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
var products = response.products
if (products.count == 0) {
storeLabel.text = "Unsuccessful"
infoLabel.text = "Cheack your settings and try again"
} else {
product = products [0]
storeLabel.text = product!.localizedTitle
infoLabel.text = product!.localizedDescription
buyButton.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)
storeLabel.text = "Thank You"
infoLabel.text = "You have removed Watermark in all your images Forever"
buyButton.isEnabled = false
case SKPaymentTransactionState.failed:
SKPaymentQueue.default().finishTransaction(transaction)
storeLabel.text = "Thank You"
infoLabel.text = "You have removed Watermark in all your images Forever"
default:
break
}
}
}
}
}