iOS应用内购买购买多个产品

3

我正在尝试测试非消耗品的应用内购买,这个功能运作正常。我有10个产品,想要在一次交易中选择几个产品进行购买。我尝试了使用SKPayment方法的数组,但没有成功。请问如何一次性购买多个产品?

单个产品可以正常购买。

func paymentQueueWithProduct(product : SKProduct){

    SKPaymentQueue.defaultQueue().addTransactionObserver(self);

    let payment = SKPayment(product: product);
    SKPaymentQueue.defaultQueue().addPayment(payment);

}

我需要在一次交易中购买多个产品。例如:
func paymentQueueWithProduct(products : [SKProduct]){

    SKPaymentQueue.defaultQueue().addTransactionObserver(self);

    let payment = SKPayment(product: products);
    SKPaymentQueue.defaultQueue().addPayment(payment);

}

请定义“不起作用”。在您的问题中提供相关细节和代码。 - rmaddy
1个回答

3

如果您想购买多个产品,除非它们是同一产品的多个,否则无法在单个交易中进行购买(您可以设置最多10个数量)。

也许考虑添加IAP,将您现有的IAP组合的好处结合起来(例如,如果您销售“等级1”“等级2”“等级3”,可以考虑销售“等级1-3” )。

虽然不相关,但您可能希望仅观察一次支付队列,而不是每次尝试购买时都尝试将自己添加为观察者。

支付在此处进行描述,并且仅讨论一次购买一个产品:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/RequestPayment.html#//apple_ref/doc/uid/TP40008267-CH4-SW2


你好,我想要实现你在这里提到的“level 1”,“level 2”,“level 3”以及“level1-3”。问题是,在购买一组时,应该有一种方法来标记个别项目已购买,否则系统将在多台机器上出现问题。我该如何解决?如果使用相同的Apple ID在第二台机器上的用户尝试购买属于某个组的项目,该怎么办?如何确定它已经被购买?谢谢。 - Alfonso Tesauro
您的收据应该始终包含最新的购买记录。这是实现收据验证的关键。 - Ben Flynn
你的问题是Xcode安装后收据没有更新吗?这是沙盒测试的限制。实际应用程序将有一个收据,当它们安装时,它将具有最新的购买记录。在任何非消耗品环境中进行购买时,您的收据将包含这些项目。您可能希望在测试构建上设置一个宏,以强制在安装时刷新收据。您不能一次购买多个不同的IAP,但是您可以购买代表您的应用程序中多个内容的东西,据我所知。 - Ben Flynn
为了简化示例,假设我们在两台Mac上安装了一个应用程序。在这两台Mac上,该应用程序在安装时已经收到了收据,因此这不是问题。我的意思是说,该收据仅包含在其被安装并收到收据的时间点之前的IAP项目。随后的购买将不会自动更新收据。如果您想刷新收据,则必须手动执行此操作,这会导致用户交互。这可能是为什么苹果回复我说不可能将集合和它们各自的项目作为IAP销售的原因。 - Alfonso Tesauro
这与“如果我在iPhone上购买A,为什么它不会立即出现在我的iPad上?”并没有太大的区别。虽然您不能依赖苹果告诉您已经购买了此项目,但是当用户尝试购买A时,您可以触发刷新,此时您将看到他们已经购买了ABC;如果他们没有购买,您可以继续购买。 - Ben Flynn
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接