产品类型
您可以提供四种产品类型:
让我们在这里跳过订阅,关注(非)消耗品。有什么不同?
- 消耗品
- 用户可以多次购买
- 它们未同步且无法恢复
- 一个例子 - 在应用货币中,你可以重复购买任何数量,......
- 非消耗品
- 用户可以购买一次(仅限数量 1)
- 它们已同步并可恢复
- 一个例子 - 解锁应用程序功能,功能包,......
身份标识
每个产品都有一个唯一标识符 ( productIdentifier
)。它可以从任何地方访问:
自定义数据
您可以将自定义数据分配给交易吗?不,只有
applicationUsername
你提到的。但它有以下缺陷:
不保证该applicationUsername
属性在您将支付交易添加到队列和队列更新交易之间持续存在。请勿尝试将此属性用于提供欺诈检测以外的目的。
您不能将其用于自定义数据。即使你试图滥用它,它仍然没有用,因为它不能保证持续存在。
购买非消耗品
这是简单的部分,因为它允许用户只购买一次。您拥有productIdentifier
随处可用的内容,然后您可以解锁功能、下载内容、...
但这显然不是你想要的。无论如何,您也可以通过这种方式实现您想要的,但是您必须为每个实体以及实体和用户组合创建一个独特的产品。这可能会导致数百万个产品标识符。我可以想象这将是一场维护噩梦。
购买消耗品
这部分比较棘手,因为作为应用程序开发人员,您需要负责:
- 将其转换为任何应用商品(货币、游戏角色……)
- 使其在所有用户的设备上可用
- 使用户能够恢复过去的购买
换句话说-消耗品的行为与任何其他支付网关(Stripe,...)一样-您知道用户为特定支付了您的费用productIdentifier
,仅此而已-其他所有内容都必须在您的应用程序中,在您的服务器上处理,...
一个例子
想象一下,您有一个游戏,用户可以在其中购买新的游戏角色。有两种方法可以实现这一目标。
非消耗品
- 每个游戏角色都有独特的
productIdentifier
- 用户只能购买每个角色一次
- 您可以恢复这些购买
优点:
缺点:
- s的列表
productIdentifier
可以增长很多,特别是如果你有很多字符,它们对于每个用户来说确实是不同的,等等。
消耗品
- 您有一个自定义应用程序货币,用户可以用它来兑换任何游戏角色
- 您可以在应用程序中提供购买产品,例如
- 你必须在上面建立自己的商店
StoreKit
- 向用户展示他有多少信用
- 允许他购买任何游戏角色
- 信用够吗?只需将其标记为已购买
- 信用不够?通知用户并让他购买更多信用
- 同时,将他想购买特定游戏角色的地方存储起来
- 当他有足够的信用(在应用程序购买中)时,查看您的存储并将其兑换为游戏角色
优点:
缺点:
- 同步在你身上
- 恢复在你身上
- 顶部的自定义商店
StoreKit
在您身上
StoreKit
充当您的任何其他支付网关