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

时间:2017-04-10 05:24:00

标签: ios swift in-app-purchase itunesconnect storekit

我正在尝试将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))

    })
}

6 个答案:

答案 0 :(得分:9)

我也有同样的问题,但是上面的解决方案对我不起作用。

这是做什么的:

事实证明,我没有在AppStoreConnect上填写正确的付款和W9表格。

转到AppStoreConnect>协议,税收和银行业务...

如果尚未填写“付费应用”合同,请填写

AppstoreConnect Contract

答案 1 :(得分:2)

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

答案 2 :(得分: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
}

答案 3 :(得分:0)

这对我有用:

我把参考名称(左侧)与产品ID(右侧)混淆了

因此请确保您在代码中使用iTunes Connect的产品ID。

enter image description here

答案 4 :(得分:0)

记住要保持您的应用内Ready To Submit状态。

enter image description here

如果您的应用内状态不同,则始终返回invalid product identifier

答案 5 :(得分:0)

确保从Xcode-目标-签名和功能中将“应用内购买”添加到项目中。