2012-03-04 68 views
3

我正在构建iOS应用程序,该应用程序提供我们网站已提供的服务。这是一个基于订阅的服务,所有功能都在订阅时启用。为了让用户在应用中注册定期付款,我似乎必须通过苹果的应用购买API,并自动更新订阅。这很好,但问题是用户通过应用程序购买的服务也必须在网站上提供。但通过演练和开发人员指南阅读,它看起来像处理交易的唯一方法是通过应用程序本身,然后可以设置将该信息传递到服务器。但后来我想象这种情况:直接从服务器访问StoreKit收据

用户在iOS应用程序上购买订阅,在使用该网站和iOS应用程序之间来回切换。在用户被收费的当天以及之后的日子,他们只是使用网站,无论出于何种原因。服务器不知道他们已经被计费,所以功能被禁用。为了让服务器找出用户已被Apple收费,用户必须在他们的iphone或ipad上打开应用程序,并将其与Apple和我的服务器同步。

有没有什么办法让我的服务器直接ping苹果,并获得有关为给定用户为我的应用程序购买的信息?我一直无法找到任何东西;两个建议的布局,无论是否使用服务器,都使用iOS应用程序作为Apple的唯一沟通者,除了让服务器验证信息是否有效。如果服务器无法亲自获取这些信息,那么还有什么其他可能的解决方案?

  1. 尽量不要使用苹果的内置支付系统,以及风险被拒(与应用程序复制这一直是推出多年的在线服务,我们不再需要使用他们的应用内购买系统呢?)
  2. 如果用户通过Apple付款,请让服务器在预计付款日期和功能被禁用(使问题发生得不那么频繁但无法解决问题)之间给予一个慷慨缓冲区
  3. 当他们的帐户似乎过期服务器,但它并不期望,发送电子邮件给用户一条消息,说他们必须打开应用程序,否则他们的帐户将不会被记入购买时间(似乎是一个奇怪的,而不是真的很棒的东西不得不要求用户做,以便使用该服务)

这是关于我迄今为止能够想到的所有。任何人对这些解决方案有任何建议,或了解其他人,或知道我可以与谁交谈以尝试解决这个问题?

+0

有点太多的信息在这里。你能稍微知道一点吗?否则[Programmers.SE]可能更好 – Coffee 2012-03-04 05:51:44

+1

感谢您的链接!我已经去注册了。下次我会记住不同类型的问题。我会离开它,因为它现在已经被回答了。 – 2012-03-07 18:51:50

回答

4

是的,您可以从服务器检查用户帐户的状态。有几点注意事项:

  • 首先,自动更新订阅保留给期刊如杂志和报纸。如果您的应用不符合这些要求,苹果可能会拒绝(如他们所做的那样),并要求您使用非续订订阅(请阅读:手动更新订阅)。
  • 第二种:这种情况下,您需要在服务器上存储您在应用中收到的所有收据。
  • 最后:我不知道您的用户名/密码系统是如何工作的,但用户必须在您的应用上使用相同的凭据登录,就像他们在您的网站上一样。

以下是您如何检查用户帐户的状态:在服务器上存储每个用户至少一张收据。当您想检查状态时,请按照Apple的程序Verifying App Store Receipts。发给他们一张收据,他们会以最新收据和截止日期作出回应。现在,您会在任何时候知道某人的帐户是否为最新帐户。

+0

谢谢安德鲁,这回答我的问题!该系统将正常工作。 Re:被拒绝,这也是一个问题。纵观Apple文档,他们说:“订阅可以延长访问内容或服务的时间,例如,您的应用程序可能每月提供财务信息或在线游戏门户。”我带着希望阅读了这篇文章,但我也听到了你从其他来源所说的话。我想唯一的办法是提交应用程序并查看。第2点和第3点已经是如何构建的。 – 2012-03-07 18:04:21

+0

是的,关于Apple doc报价,但我认为该声明适用于两种订阅类型。我并不是说他们不会让你使用订阅,我只是说他们可能会坚持使用非续订而不是自动更新类型。这可能是一个祝福。自动续订订阅可能很头疼:您无法取消订阅,您无法分辨用户是否在开始续订之前启用了“自动”功能,等等。使用非续订订阅,您可以手动扩展用户的订阅作为奖励,因为您自己计算到期日期。 – Andrew 2012-03-07 21:07:51

+0

嗨,您好,先前发布的链接似乎已被Apple删除。 – 2016-11-04 12:11:44