我正在尝试将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))
})
}
答案 0 :(得分:9)
我也有同样的问题,但是上面的解决方案对我不起作用。
这是做什么的:
事实证明,我没有在AppStoreConnect上填写正确的付款和W9表格。
转到AppStoreConnect>协议,税收和银行业务...
如果尚未填写“付费应用”合同,请填写
答案 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)
答案 4 :(得分:0)
答案 5 :(得分:0)
确保从Xcode-目标-签名和功能中将“应用内购买”添加到项目中。