将 iOS 应用内订阅链接到 MySQL 数据库

Linking iOS In-App Subscription to MySQL database

我遵循了一些关于为 iOS(尤其是 Ray Wenderlich)实施应用内购买和订阅的教程,但我对如何将我们的 iOS 应用程序与我们的网站集成有疑问,以便如果有人订阅了该应用程序,他们也可以访问网络上的内容。

我们的网站和应用程序提供对视频的访问。所有订阅者都可以访问所有视频。我们的网络使用 PHP 和 MySQL。当有人在网络上订阅时,他们的帐户记录会在我们的 MySQL 数据库中创建,他们会被标记为订阅者,以便他们可以访问内容。

我们想在我们的应用中实现应用内订阅,但我们需要在订阅发生时在我们的数据库中创建一条记录。

问题是,我们是否应该在收据验证时执行此操作(我们将在 PHP 中执行此操作)?另外,有没有办法知道用户何时通过 iOS 取消订阅,以便相应地更新数据库?

我们希望它如何工作的最接近的例子是 Gaia。

Should we do this upon receipt validation?

是的,您应该等到验证收据后才能将订阅标记为对用户有效。

Is there a way to know when a user unsubscribes through iOS so that the database can be updated accordingly?

正确的实现方式是将整个 IAP 收据存储在您的服务器上,并定期用 Apple 刷新它以获取当前订阅状态。仅仅因为有人开始订阅并不意味着它在您下次查看时仍然有效(例如,他们可能已关闭 auto-renew 或获得退款)。

这篇博文更详细地解释了一些细微差别:iOS Subscriptions Are Hard

Is there a way to know when a user unsubscribes through iOS so that the database can be updated accordingly?

使用状态更新通知。

A statusUpdateNotification is a server-to-server notification service for auto-renewable subscriptions. A notification specifies the status of a subscription at the time the notification is sent.

由于状态更新通知不是可靠的服务,Apple 建议结合其他方法使用此服务,例如轮询 verifyreceipt 端点。在服务器中创建调度程序将是与通知一起的最佳选择。