我为我的项目配置了IAP,它似乎有用,所以我的应用程序在应用程序商店上运行,但我发现大约30%的请求由于某种原因iTunes返回invalidProductIdentifier,下面是完整代码:
class IAP: NSObject, SKProductsRequestDelegate {
static let sharedInstance = IAP()
func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
response.invalidProductIdentifiers.forEach() { id in
//here is the part that could fail sometimes
print(id)
}
}
//here how I setup IAP
func canMakePayments() {
if(SKPaymentQueue.canMakePayments()) {
var productID = NSSet()
productID = NSSet(object: "unlock")
let request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>)
request.delegate = self
request.start()
}
}
}
在这里我如何使用AppDelegate
:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
IAP.sharedInstance.canMakePayments()
return true
}
答案 0 :(得分:2)
如果您在测试设备上收到invalidProductIdentifier,可能会有很多原因导致这种情况发生。最常见的情况是:
您可以找到更多原因here。 但是,测试设备上的无效产品ID问题并不一定意味着您的用户也会遇到此问题。
答案 1 :(得分:0)
如果您的测试设备中有该应用程序的appstore版本,并且您尝试在同一设备上调试该IAP,则可能会导致此问题。在尝试任何操作之前,请先卸载apstore版本的应用程序。 第二个可能的问题是,您应该在插入USB电缆的情况下检查IAP。您无法通过Ad-hoc部署对其进行测试。
此外,我找到了一个很好的链接来检查所有可能的失败: