我想在應用內購買添加到我的Xcode應用程序,而我得到這個錯誤:終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,理由是:「無效的產品標識:(null)的
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid product identifier: (null)' * First throw call stack: (0x184bf82d8 0x19641c0e4 0x184bf8218 0x189597210 0x100066fa8 0x100067018 0x18966d404 0x1896564e0 0x18966cda0 0x18966ca2c 0x189665f68 0x18963918c 0x1898da324 0x1896376a0 0x184bb0240 0x184baf4e4 0x184bad594 0x184ad92d4 0x18e2ef6fc 0x18969efac 0x100069600 0x196a9aa08) libc++abi.dylib: terminating with uncaught exception of type NSException
我曾嘗試使用IOS模擬器和使用我的iPhone設備來運行我的應用程序。
完全ViewController.swift代碼:
import UIKit
import StoreKit
class ViewController: UIViewController, SKPaymentTransactionObserver, SKProductsRequestDelegate{
var product:SKProduct!
@IBOutlet weak var lastmanstandingButton: UIButton!
@IBOutlet weak var upgradeProButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
lastmanstandingButton.enabled = false
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
let products = response.products
if (products.count != 0)
{
product = products[0] as! SKProduct;
//productInfo.text = product.localizedTitle + "\n" + product.localizedDescription
}
}
func getProductInfo(){
if (SKPaymentQueue.canMakePayments()){
let productID:NSSet = NSSet(object:"com.mi.yaya.inapp1");
let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
request.delegate = self;
request.start()
}
}
@IBAction func upgradeProButtonAction(sender: AnyObject) {
let payment:SKPayment = SKPayment(product: product);
SKPaymentQueue.defaultQueue().addPayment(payment)
}
func unlockProFeatures(){
lastmanstandingButton.enabled = true
}
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
for transaction:AnyObject in transactions {
if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
switch trans.transactionState {
case .Purchased:
self.unlockProFeatures();
SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
break
case .Failed:
SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
break
case .Restored:
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
break
default:
break
}
}
}
}
}
教程使用IAP:https://www.youtube.com/watch?v=hnRO87_2GpQ
編輯:在iTunes Connect中我已經加入我創建的應用程序的應用內購買。它說:狀態:準備提交
productID是正確的。我甚至將iTunes Connect IAP中的productID複製/粘貼到xCode項目中。我看不出這裏有什麼問題。 –
我確定您正在設置正確的ID,但通過在'getProductInfo'中設置斷點來檢查它是否正確發送。 –