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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS - 应用内购买 - 无效的产品标识符相关的知识,希望对你有一定的参考价值。

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

    })
}
答案

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

另一答案

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

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
}

以上是关于iOS - 应用内购买 - 无效的产品标识符的主要内容,如果未能解决你的问题,请参考以下文章

无效的产品标识符:如何验证 iOS 沙盒环境

StoreKit In App Purchase 无效的产品标识符 [重复]

IAP 产品标识符无效

iOS7 xCode5如何解决2014年应用内购买的“无效产品ID”?

iOS 应用内购买。识别购买的产品(非消耗品)。

将应用内集成到 iOS 应用程序中的问题 [关闭]