Ich benutze diesen Code meine in-App-Kauf zu erstellen:App stürzt mit In-App-Kauf Fehler
import UIKit
import StoreKit
class ViewController: UIViewController, SKProductsRequestDelegate, SKPaymentTransactionObserver, SKStoreProductViewControllerDelegate {
var product_id: String?
@IBOutlet weak var buyButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
product_id = "product_id"
SKPaymentQueue.default().add(self)
}
@IBAction func unlockAction(sender: AnyObject) {
print("About to fetch the product...")
// Can make payments
if (SKPaymentQueue.canMakePayments())
{
let productID:NSSet = NSSet(object: self.product_id!);
let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>);
productsRequest.delegate = self;
productsRequest.start();
print("Fetching Products");
}else{
print("Can't make purchases");
}
}
func buyProduct(product: SKProduct){
print("Sending the Payment Request to Apple");
let payment = SKPayment(product: product)
SKPaymentQueue.default().add(payment);
}
func productsRequest (_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
let count : Int = response.products.count
if (count>0) {
let validProduct: SKProduct = response.products[0] as SKProduct
if (validProduct.productIdentifier == self.product_id) {
buyProduct(product: validProduct);
} else {
print(validProduct.productIdentifier)
}
} else {
print("nothing")
}
}
Aber wenn ich auf die Schaltfläche klicken (unlockAction) zweimal oder einmal klicken, bewegen auf verschiedene Controller, Rückkehr und klicken sie einmal mehr meinen App stürzt auf dieser Linie:
SKPaymentQueue.default().add(payment);
mit Fehler (lldb)
Wie es zu beheben?
Codierung, wenn ich diese Zeile löschen 'SKPaymentQueue.default(). Add (Selbst-)' in 'viewDidLoad()' es ist auch Problem lösen. Ist dieser Weg richtig? –
Nein, weil 'SKPaymentQueue.default(). Add (self)' es verbinden Sie Ihre Zahlungsmethode in-App-Purchase Pop-up ... Bedeutet, dass dies die gesamte Arbeit für Sie bereitstellen, so dass es während Ihrer Ladung erforderlich ist, so dass Sie nicht Wenn Ihre Bewerbung online geht, erhalten Sie einen Fehler. –
Es ist seltsam. Wenn ich die Zeile 'SKPaymentQueue.default() lösche. Add (self)' meine App in App funktioniert gut. –