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 - 应用内购买 - 无效的产品标识符的主要内容,如果未能解决你的问题,请参考以下文章
StoreKit In App Purchase 无效的产品标识符 [重复]