用户登录时如何保护非消耗性应用内购买

时间:2019-03-23 16:13:00

标签: android ios google-cloud-firestore in-app-purchase

在我的一个应用中,用户可以通过非消耗性的应用内购买来解锁完整版。在下一个更新中,我将介绍一种登录到我们的应用程序的功能,以便可以跨设备同步其进度。

现在出现了问题-当用户登录时,我会将有关其购买的信息传输到我们的服务器。但是,如果用户从我们的应用程序注销,然后他们的朋友登录,该怎么办?该设备仍使用原始的Apple ID连接到App Store,他们可以恢复购买的商品,现在该商品将与他们朋友的帐户相关联。

如您所见,理论上,用户可以允许所有朋友免费解锁我们的应用程序,除非我们找到一种将每次购买与服务器上特定用户唯一关联的方式。

我确定这是一个常见问题,那么通常如何解决?我们需要确保来自iOS和Android的购买。

P.S。同步是通过Firestore完成的。

1 个答案:

答案 0 :(得分:3)

这两个App Store均未对此提供“官方”指导。在RevenueCat,我们将收据文件保存到用户ID中,然后每当有新购买(或还原)时,检查收据文件是否已保存到另一个userId中。然后,我们会返回一个错误,表明该收据已被另一个帐户使用。

如果您查看某些大型订阅应用程序(Netflix,Spotify,HBO等),您会发现它们甚至没有“恢复购买”按钮。如果您需要登录帐户,则可以取消此操作,因为可以通过登录帐户来恢复购买。但是,除非您拥有像Netflix这样的工程和客户支持团队,否则“恢复购买”按钮通常是个好主意,因为它可以使您免于遭受极端情况的困扰-只需在“解锁”访问权限之前检查收据是否已经保存在另一个帐户中即可