使用未完成的交易在iOS中跨设备共享耗材?

问题描述 投票:2回答:1

TL; DR你可以推迟在iOS上的耗材上的finishTransaction调用来模仿androids consumeAsync吗?

在Android中,可以购买一个项目,它将最终出现在由billing api管理的列表中。并且可以通过queryPurchaseHistoryAsync访问。

然后可以在以后使用某个项目。购买和消费是两个独立的事情。

帐户在我们的应用程序中是可选的,我们使用android中描述的功能来跟踪用户已经购买的项目但是当一个人丢失他/她的设备时尚未消费。

关于多设备同步的SKPaymentQueue上的文档并不清楚。

队列的内容在您的应用程序启动之间是持久的。

但实际上,它似乎是在设备之间交换的。

虽然不同的sources建议你必须照顾管理自己的消耗品状态。

我想知道是否可以通过将消耗品SKPaymentTransaction保持在purchased状态来使用SKPaymentQueue作为单点。因此,我不会在物品实际消耗之前调用finishTransaction

理论上,交易应保留在SKPaymentQueue中,并应转移到使用相同AppStore帐户登录的所有设备。

一旦在其中一个设备上完成交易,它就应该从队列中删除,并且信息应该再次传播到所有设备。

我无法在某处找到这种方法,我想知道我是否错过了一些重要的东西。

ios in-app-purchase storekit
1个回答
3
投票

你绝对应该在iOS上完成交易:

每次应用程序启动或从后台恢复时,StoreKit都会调用您的观察者的paymentQueue(_:updatedTransactions :),直到删除它们为止。为此,您的客户可能会被反复要求对其购买进行身份验证或被禁止购买您的产品。 https://developer.apple.com/library/archive/technotes/tn2387/_index.html#//apple_ref/doc/uid/DTS40014795-CH1-BEST_PRACTICES-FINISH_THE_TRANSACTION

和Android:

消费对应于给定购买令牌的购买。这将导致此项目从getPurchases()的所有后续响应中删除,并允许重新购买相同sku的项目。 https://developer.android.com/google/play/billing/billing_reference#consumePurchase

实现多设备支持的正确方法是使服务器验证并跟踪为用户购买的产品。使用服务器,您不仅可以实现设备同步,还可以实现多平台支持。

你也可以使用像RevenueCat这样的服务,为你做这一切,而不会让你头疼。

© www.soinside.com 2019 - 2024. All rights reserved.