在应用程序中购买invalidProductIdentifier的时间为30%?

Дім*_*мар 17 in-app-purchase ios swift

我已经为我的项目配置了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()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里我如何使用它AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        IAP.sharedInstance.canMakePayments()
        return true
    }
Run Code Online (Sandbox Code Playgroud)

小智 2

如果您在测试设备上收到无效的产品标识符,则发生这种情况的原因可能有很多。最常见的情况是:

  • 在检查之前,应用程序未从头开始重新安装:您需要从设备中删除应用程序并重新安装;
  • 旧产品 ID:如果您有无效的产品 ID,它们将出现在 invalidProductIdentifiers 中;
  • 越狱设备:从Cydia中删除AppSync以在越狱设备上进行调试;
  • 使用未与显式应用程序 ID 关联的配置文件。

您可以在这里找到更多原因。然而,测试设备上的无效产品 ID 问题并不一定意味着您的用户也会遇到该问题。