iOS - 应用内购买 - 无效的产品标识符

问题描述 投票:3回答:2

我正在尝试将In-App Purchase集成到我的项目中。我使用了第三方库SwiftyStoreKit作为IAP助手。

我正在尝试获取我的应用程序内产品的信息,但总是得到Invalid Product Identifiers的回复

我的所有协议都有效(付费和免费)。此外,我的应用内商品状态显示Waiting for Upload。我的应用程序还没有发布,所以我在沙盒模式下测试它。

在我的代码中:

import UIKit
import StoreKit
import SwiftyStoreKit

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewDidAppear(_ _animated: Bool) {
    super.viewDidAppear(_animated)

    if dataModel.lists.count >= 2 {
        getInfo()
    }
}

func getInfo() {

    NetworkActivityIndicatorManager.NetworkOperationStarted()

    SwiftyStoreKit.retrieveProductsInfo([productIdentifier], completion: { result in

        NetworkActivityIndicatorManager.networkOperationFinished()

        self.showAlert(alert: self.alertForProductRetrievalInfo(result: result))

    })
}
ios swift in-app-purchase itunesconnect storekit
2个回答
2
投票

检查你的productIdentifier!它应该与iTunes Connect中注册的字符串相同。例如“com.myapp.myPurchase”


2
投票

我有完全相同的错误,并在应用程序委托中运行此代码似乎解决了我的问题,因为通过在启动时添加您的应用程序的观察者确保它将在您的应用程序的所有启动期间保持,从而允许您的应用程序接收所有支付队列通知。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
	// see notes below for the meaning of Atomic / Non-Atomic
	SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
	    for purchase in purchases {
	        switch purchase.transaction.transactionState {
	        case .purchased, .restored:
	            if purchase.needsFinishTransaction {
	                // Deliver content from server, then:
	                SwiftyStoreKit.finishTransaction(purchase.transaction)
	            }
	            // Unlock content
	        case .failed, .purchasing, .deferred:
	            break // do nothing
	        }
	    }
	}
    return true
}
© www.soinside.com 2019 - 2024. All rights reserved.