多个产品的应用内购买

Posted

技术标签:

【中文标题】多个产品的应用内购买【英文标题】:In App Purchases with multiple products 【发布时间】:2015-06-12 18:08:58 【问题描述】:

我正在设置订阅应用程序,我希望有 2 个选项:2 个月和 1 年。这是我目前使用的适用于 2 个月购买的代码。如何将其修改为两者兼有?

func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) 
    let products = response.products
    if products.count != 0 
        product = products[0] as! SKProduct
    




func getProductInfo() 
        if SKPaymentQueue.canMakePayments() 
            let productID : NSSet = NSSet(object: "2MonthPrem")
            let request : SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
            request.delegate = self
            request.start()
    

第二个函数出现问题:getProductInfo()。如何添加第二个产品 ID?我尝试了以下方法:

        if SKPaymentQueue.canMakePayments() 
            let productID : NSSet = NSSet(object: "2MonthPrem")
            let productIDTwo : NSSet = NSSet(object: "1YearPrem")
            let request : SKProductsRequest = SKProductsRequest(productIdentifiers: [productID, productIDTwo] as Set<NSObject>)
            request.delegate = self
            request.start()
    

【问题讨论】:

嗨 Mason,我只是想解释一下我从标题中删除“in SWIFT”的原因。既然您选择了 Swift 标签,那么它在标题中没有任何好处,它只是增加了噪音。将它放在标题中不会让 Swift 用户更容易看到您的帖子,他们会按标签搜索,并且在 google 网络结果中,您的帖子会显示“Swift - In App Purchases with multiple products”。仅供参考 你试过let productID : NSSet = NSSet(array: ["2MonthPrem", "1YearPrem"])吗? 世嘉零。那行得通。我有一个问题要问你。这样做,当我将它们从 productsRequest 函数中的数组中拉出时,“1YearPrem”是索引 0,“2MonthPrem”是索引 1。Apple 是否按字母顺序排列它们?我还尝试在 getProductInfo() 中切换它们的顺序,它们出来了“1 年:索引 0、2 个月、索引 1。我猜是按字母顺序排列的,但希望你能确认? 感谢丹的澄清。 你不应该依赖元素的顺序。始终使用符号名称来防止任何错误,因为这会影响您的用户资金。 【参考方案1】:
let productID : NSSet = NSSet(array: ["2MonthPrem", "1YearPrem"])

这可行,但是当您从 Apple 回调它时,它会按字母顺序排列它们。因此,请确保在返回函数中测试每个数组索引。

【讨论】:

以上是关于多个产品的应用内购买的主要内容,如果未能解决你的问题,请参考以下文章

应用内购买,具有不同持续时间的多个自动续订订阅

IOS 应用内购买产品

一个应用程序。不同的领土。多个应用内购买价格

iTunes Connect 应用内购买多个应用

无法向苹果提交应用内购买产品

iOS 应用内购买。识别购买的产品(非消耗品)。