2
でクラッシュ:アプリケーションは、私は私のアプリ内購入を作成するには、このコードを使用して、アプリ内購入のエラー
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")
}
}
しかし、私は二回ボタン(unlockAction)をクリックするか、1回クリックし、別のコントローラに移動し、リターン場合そしてもう一度、このライン上で私のアプリがクラッシュをクリックします。
SKPaymentQueue.default().add(payment);
エラー(lldb)
でそれを修正する方法は?
コーディング 'SKPaymentQueue.defaultは()。' 'のviewDidLoad()で(自己)を追加'それはまた、問題を解決しています。この方法は正しいですか? –
いいえ 'SKPaymentQueue.default()。add(self)'は、お支払い方法のアプリ内購入のポップアップを接続するためです...これはあなたに完全な作業を提供するので、あなたのアプリケーションがライブになるときに何か間違いがあります。 –
それは変です。 'SKPaymentQueue.default()。add(self)'という行を削除した場合、アプリの購入でうまくいきます。 –