在应用程序自动更新订阅

pt2*_*ph8 25 iphone in-app-purchase

对于关于iTunes订阅的第一百万个问题感到抱歉,但我仍有一些疑问.

基本上我在我的应用程序中实现自动更新订阅,我想确保我做对了.以下列出了我想出的步骤:

  • 每当用户购买订阅时,将收据发送到服务器以验证它
    • 如果收据有效,请将其保存在数据库中
  • 在应用程序加载时,询问服务器是否存在此UDID的收据(这是为了确定用户是否具有有效订阅)
    • 如果是,请检查在从订阅开始日期到过期日期的日期范围内是否在商店中添加了新项目
      • 如果有的话,以某种方式通知用户这些项目并将其标记为可免费下载

这些步骤是否正确?如果是这样,为什么Apple医生说:

在大多数情况下,您的iOS客户端应用程序不需要更改.实际上,您的客户端应用程序现在变得更加简单,因为您可以使用相同的代码来恢复自动更新订阅,就像恢复非消耗性产品一样."恢复交易"中对此进行了描述.您的应用程序会在续订订阅的每个时间段内收到单独的交易; 您的申请应单独核实每张收据.

对我来说,看起来这需要一些代码来处理我提到的所有各种情况.或者我完全错了.我呢?

另外,我如何知道订阅到期日期?我无法找到在任何地方获取此信息的方法.我应该把它保存在我自己的数据库中吗?

更新:

自从我发布这个问题以来,我已经想出了一些事情.如果我错了,请随意纠正我.

首先,我想我应该在我自己的数据库中存储订阅的长度,因为正如Apple的文档中所述,您无法通过Apple的Web服务以任何方式检索它.实际上,每个订阅长度都有不同的产品标识符,因此您应该有办法将产品标识符转换为订阅长度.

此外,Sylvian 已经公布了有关他实施自动续订订阅的详细信息,所以至少我知道我的想法并没有太多缺陷.

现在唯一的问题是:我怎么知道用户有有效的订阅?我可以将这些信息存储在我的服务器上,是的,但是如何将用户与已完成的交易相关联?我应该保存设备的UDID吗?

Syl*_*ain 30

以下是我们如何在我的公司实施In App Purchases,特别是新的汽车再生产品.

应用程序将交易收据发送到我们的Web服务,如果我们正确处理它并且Apple可以验证它,我们会向应用程序返回OK.在这种情况下,我们更新了用户帐户(即数据库),说"是他已经付款并且他的订阅有效,直到收据到期日期".

在此Web服务的OK之后,应用程序通过另一个Web服务重新加载帐户信息,并看到有一个有效的订阅.就是这样......直到自动再生产品出现.

我们现在必须实施一些每天运行的CRON工作:我们每天都会制作一份应该过期的通行证清单,我们会询问Apple原始收据是否仍然有效:神奇的是,在他们的回答中,有latest-receipt嵌入最新收据的字段.如果它与我们的不同,我们理解订阅已自动续订,我们存储下一次cron检查的最新收据,并且我们更新用户帐户以延长到期日期.

希望能帮助到你.

  • 如果订阅已过期,只要用户在您的系统上拥有帐户,您是否每天都会检查是否可以重新订阅(可以在AppStore中的应用外部完成)?重新订阅不会对此产生影响. (4认同)
  • @Sylvain - 我认为当用户B在用户A购买了您的应用内商品的设备上登录您的应用时,您的解决方案就会崩溃.因此,假设用户A与iOS帐户A'购买了自动续订订阅.现在,A退出您的应用,用户B登录.她尝试使用相同的A'iOS帐户购买您的产品.Apple说"OK"并且不会再次向用户收费,而您的服务器现在将用户B归功于购买.结果是您的购买数据库中有两条记录,但只有一条付款.当订阅续订时,cron作业将用户标记为良好.你解决了这个问题吗? (4认同)
  • @psychotik,您提到的这个问题可以通过在收到收据时注册收据的原始交易代码来抵消.如果您收到的新订阅具有与某人已经采用的相同的交易ID,则您不会将此订阅永久保留给B人. (2认同)

pt2*_*ph8 8

我想我找到了解决方案.它不需要额外的用户名/密码,似乎工作正常.

注意:如果您认为这是不合适的,请在评论中解释原因.谢谢.

基本上,每当用户购买订阅时,我都会根据我的服务器验证收据,并将收据数据存储在用户默认值中.然后,当应用程序打开时,或者每当我需要检查订阅是否仍然有效时,我从用户默认值中检索以前保存的收据数据并对服务器进行验证.

我的webservice只返回订阅是否仍然有效或已过期,以及其他一些相关信息,如订阅长度.为此,它只是像往常一样查询iTunes服务器,并检查状态响应是否为非零.21006表示订阅已过期.

  • @NicTesla:在沙箱中订阅长度减少,使测试更容易.但是没有记录.请查看http://dev-ios.blogspot.com/2011/05/validity-time-auto-renewables-in.html (3认同)