【发布时间】:2023-03-13 04:30:01
【问题描述】:
我是一名前端开发人员,我即将开始编写我的第一个后端(使用 AWS,希望它不会是一场灾难)。我需要一些指导,可以是指向 SO 或教程或其他适当主题的链接 - 我已经搜索了很长时间,但我可能不知道如何搜索我需要解决的问题。
保持简单:我的客户卖书。为了补充这些书籍,我们目前正在开发一个应用程序。该应用程序的不同部分将对应不同的书籍,尽管该应用程序本身也有其价值(即您不必拥有一本书即可使用该应用程序)。这个想法是,如果用户拥有一本书,他将被允许从 AppStore 免费下载应用程序的相应部分。如果他不这样做,他必须使用 IAP 购买此内容以支付一定的金额。
我想出了以下简单的解决方案:
- 我们正在维护一个包含所有已售图书 ID 的数据库
- 我们允许用户注册并输入他们拥有的图书的 ID
- 我们根据我们的数据库检查这些 ID,并检查之前是否没有其他用户输入过这些 ID
- 如果 id(s) 正常,我们允许用户下载与所拥有图书对应的内容。
如果用户在这些设备上登录到他的帐户,则可以从多个设备(例如他的 iPad、他的 iPhone、他孩子的 iPhone...)下载内容。
但是,我想防止出现以下情况:用户将他的帐户提供给朋友,然后他在他的设备上登录该帐户并下载内容,然后退出并使用该应用程序,即使他没有买了任何东西,但他不拥有这些书。
我的想法:
用户必须登录以验证他有权使用该内容,即使该内容已经在他的手机上(之前下载过)。用户只能同时登录到一个设备(登录到另一个设备后,他将从第一个设备注销)。严重缺点:用户只能在连接到 Internet 时使用该应用程序,即使他可能已经下载了所有内容。
通过执行应用内购买或购买书籍,用户有权获得例如 3 次下载。严重的缺点:如果用户删除了应用程序并想要重新安装它怎么办?重新下载购买的零件将计为一次下载,因为没有可靠的方法来检查设备是否与以前相同,至少对于 iOS 来说不是 - 有一个叫做 vendorId 的东西,但事实证明它不可靠 - 例如在系统更新时更改。
以尽可能低的价格(而不是免费)为书主提供相同的内容,并以正常价格为其他人提供相同的内容。这样,我会将所有检查委托给 Apple(通过用户的 iCloud 帐户),因为解锁内容始终需要使用 IAP,并且一旦购买,Apple 将跟踪所有内容。
还有其他方法吗?请帮忙。
还有一件事需要考虑 - 我们希望有可能创建“课堂帐户” - 多个设备可以登录到同一个帐户并下载内容。客户端将决定允许多少设备,并将此下载数量放入数据库。
【问题讨论】:
-
我假设您的意思是“带有图书购买 ID 的数据库”?确保输入这些 ID 非常方便(例如,使用从 ID 生成的条形码)!顺便说一句,这个问题与 iOS、IAP 和 Android 无关;相反,这是一个通用的系统设计问题。
-
是的,我们可能会使用一些自动化的方式来做到这一点。但是,如果您有其他更方便的想法,请与我分享 :) 好的,我会尝试从这个问题中删除 ios/android 标记。
标签: in-app-purchase backend mobile-application system-design