在 App Purchase 中,30% 的产品标识符无效,为啥?

Posted

技术标签:

【中文标题】在 App Purchase 中,30% 的产品标识符无效,为啥?【英文标题】:In App Purchase invalidProductIdentifier in 30% times why ?在 App Purchase 中,30% 的产品标识符无效,为什么? 【发布时间】:2016-08-15 19:59:24 【问题描述】:

我已经为我的项目配置了 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
    

【问题讨论】:

【参考方案1】:

如果您在测试设备上收到 invalidProductIdentifiers,可能有很多原因会导致这种情况发生。最常见的情况是:

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

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

【讨论】:

但是我的应用已经上线,IAP 已经上线,并且在大约 30% 的情况下它只返回 invalidProductIdentifiers ... 我现在明白了。在越狱设备上可以看到此错误。可能这 30% 的人使用越狱设备。【参考方案2】:

如果您的测试设备中有该应用程序的 appstore 版本,并且您尝试在同一设备上调试该 IAP,这可能会导致此问题。请在尝试任何操作之前卸载应用程序的 apstore 版本。 第二个可能的问题是,您应该在插入 USB 电缆的情况下检查 IAP。您无法使用 Ad-hoc 部署对其进行测试。

我还找到了一个很好的链接来检查所有可能的故障:

http://troybrant.net/blog/2010/01/invalid-product-ids/

【讨论】:

我正在从分析中获取这些数据,但问题仍然存在

以上是关于在 App Purchase 中,30% 的产品标识符无效,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

从 App 内获取 iOS In-App-Purchase 产品的产品参考名称

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

In App Purchase Android : 购买已购买的产品时 Google Play 没有响应

In App Purchase产品ID是否必须以Reverse-DNS开头?

Flutter:如何在 in_app_purchase 中调用 Apple pay bottom sheet?

In App Purchase沙盒问题