【发布时间】:2011-07-16 19:20:21
【问题描述】:
对不起,关于 iTunes 订阅的第 100 万个问题,但我仍有一些疑问。
基本上,我在我的应用中实现了自动更新订阅,我想确保我做对了。以下是我想出的要采取的步骤列表:
- 每当用户购买订阅时,将收据发送到服务器以进行验证
- 如果收据有效,则将其保存在数据库中
- 在应用程序加载时,询问服务器是否存在此 UDID 的收据(这是为了确定用户是否有有效的订阅)
- 如果是,请检查是否在从订阅开始日期到到期日期的日期范围内在商店中添加了新项目
- 如果有,以某种方式通知用户这些项目并将它们标记为可免费下载
- 如果是,请检查是否在从订阅开始日期到到期日期的日期范围内在商店中添加了新项目
这些步骤是否正确?如果是这样,为什么苹果文档会说:
在大多数情况下,您的 iOS 客户端应用程序不需要更改。事实上,您的客户端应用程序现在变得更简单,因为您可以使用与恢复非消耗性产品相同的代码来恢复自动更新订阅。这在“恢复交易”中进行了描述。您的应用程序会在订阅续订的每个时间段收到单独的交易;您的应用程序应分别验证每张收据。
在我看来,这似乎需要一些代码来处理我提到的所有各种情况。或者我完全错了。我是吗?
另外,我怎么知道订阅到期日期?我找不到在任何地方获取此信息的方法。我应该将其保存在我自己的数据库中吗?
更新:
自从我发布这个问题以来,我已经弄清楚了一些事情。如果我错了,请随时纠正我。
首先,我想我应该将订阅的长度存储在我自己的数据库中的某个位置,因为正如 Apple 文档中所述,您无法通过 Apple 的网络服务以任何方式检索它。实际上,每个订阅长度都有不同的产品标识符,因此您应该有一种方法可以将产品标识符转换为订阅长度。
另外,Sylvian has posted 详细介绍了他对自动更新订阅的实施,所以至少我知道我的想法并没有太大的缺陷。
现在唯一的问题是:我怎么知道一个用户有一个有效的订阅?我可以将这个信息存储在我的服务器上,是的,但是我如何将一个用户与一个已完成的订阅相关联交易?我应该保存设备的 UDID 吗?
【问题讨论】:
-
您应该查看 deforums.apple.com 来解决问题。还没有人知道答案,但开发人员正在那里讨论它,
-
@honcheng 我在这里发帖是因为我在那里找不到答案。
-
我正在为完全相同的问题而苦苦挣扎,最重要的是识别“同一用户 - 其他设备”。您对此有进一步了解吗?
-
此链接stackoverflow.com/questions/22680059/… 可能会对您有所帮助。