与第三方系统集成的iOS应用内购买订阅。

3
我需要为一个已在其网站上订阅的系统构建一个应用程序。看起来苹果不允许使用任何自己的订阅,并强制将任何应用与iOS应用内订阅集成。
是否有任何方法来集成两个订阅系统?主要问题是用户可以通过iTunes管理iOS订阅,我无法找到是否可能获取关于此的信息并在现有系统中停止订阅,如果通过iTunes停止订阅。
因此,是否有可能获得有关取消iTunes用户的通知?
2个回答

5

使用第三方订阅

首先,你可以在你的应用中支持现有的订阅系统,但这必须是在 App Store 订阅之外。同时,你需要非常小心地选择 UI 界面。你不能提示用户绕过 App Store 并通过你的服务器购买,但你可以为现有的订阅用户提供使用他们之前在你的网站上获得的凭据登录的能力。

话虽如此,苹果对于 App Store 中允许什么和不允许什么的裁定可能会相当反复无常。我曾经参与开发过这种类型的应用,但它们都是为相当知名的杂志出版物开发的。并不保证他们会允许每个人都这样做。

检测未订阅的 App Store 订阅

关于使用 App Store 订阅,当用户在你的应用中购买订阅时,他们将在 SKPaymentTransaction 对象中收到一个收据。在你给用户访问任何内容之前,这个收据应该被发布到你的后端服务器以确保它是有效的。有关更多详细信息,请参见 In-App Purchase Programming Guide

当你设置订阅类型时,你需要指定这个订阅的持续时间。所以如果在收到收据时记录 SKPaymentTransaction 中的交易日期,你可以通过将订阅的持续时间加上交易日期来确定该订阅应该何时到期。

如果这是一个自动续订的订阅,当订阅续订时,你将收到一个新的收据。因此,一旦你已经验证了它与你的后端服务器,你可以基于新的交易日期更新你的到期日期。如果在第一个收据到期之前没有收到新的收据,那么用户很可能已经取消了他们的订阅。

在后端,你的服务器还可以根据验证服务器的响应来告诉一个特定的订阅将在何时到期。首先有状态码,它将告诉你是否订阅已经过期,但也有一个在解码的收据中返回的到期日期,如果它还没有到期,那么它将告诉你什么时候到期。

有关更多详细信息,请参见 可自动续订的订阅 文档。

测试自动续订订阅

值得注意的是,在App Store沙箱环境中测试自动续订订阅时,各种订阅类型的时长都被大幅缩短,以便于测试。例如,一个1周的订阅在沙盒环境中只能持续3分钟。您可以在iTunes Connect开发人员指南中查看完整的时间列表。

谢谢。其实这正是我所思考的,只是无法形式化。此外:我找到了一个很好的这种集成方式的例子 - http://www.nytimes.com/ 和相关的iOS应用程序。 - Dmitry Khryukin

2
所以您希望那些从网站购买服务的人能够像从应用内购买一样使用应用程序,而应用内购买者也能像通过网站加入的人一样加入服务?据我所知,苹果不允许您通过其他服务进行支付,但假设有人从应用程序中购买了该服务,那么应该发生的是钱将被转移到公司账户。然后,在付款后,您应该包括一些代码,执行类似于新用户在网站上支付服务后所做的操作,即将其帐户创建为付费帐户。然后,应用程序还应该有一个登录屏幕,注册用户(无论他们从何处注册)都可以登录到应用程序并使用服务。现在的问题确实是,如果订阅通过iTunes停止,您将永远不会知道,虽然解决这个问题的方法是在该公司的服务器中进行检查,该服务器应监视来自一个账户的收入。然后,如果该用户已停止支付(或停止订阅),则您将能够通过应用程序停止该服务。并且您应该在订阅期限过后重新检查服务器的付款状态,比如每周应检查一次周订阅。(抱歉,我想将此作为评论发布,但我的声望还不够高。)

我该如何自动检查通过苹果系统完成的付款? - Dmitry Khryukin
@DmitryKhryukin 嗯,这很简单,在应用内购买之后,您可以运行一些代码。在那里,您可以像我建议的那样创建一个帐户,或/和编辑一个默认为FALSE的BOOL变量,该变量将位于plist中,应用程序将从此plist中读取。然后,您将使其更改此BOOL为TRUE,以便应用程序能够自动检查。如果您是指检查订阅是否仍处于活动状态,我并没有指的是Apple的服务器,而是指公司服务器,该服务器将(并且应该)记录每个帐户的交易。 - isklikas
@DmitryKhryukin 现在假设您在公司的服务器中发现客户在订阅期限过后仍未付款,那么您就知道他的订阅已过期。您还应该有一个NSDate检查,它将检查事件日期并测量自过期日期以来的间隔。 如果此值为负或零,则应检查公司服务器以获取此帐户,并将BOOL设置为FALSE,仅当最近发生了使订阅有效直到更晚时间的交易时,才将BOOL再次设置为TRUE并将帐户验证为已购买。 - isklikas
1
@DmitryKhryukin作为一个声誉达到350的人说:“没有办法知道订阅何时到期。你必须在你的服务器上观察它,并且应用程序必须要求用户更新订阅。除了在服务器上记录并每次询问服务器外,也没有其他方法检查当前设备是否有活动订阅。所有这些订阅都令人沮丧。”为什么?因为苹果几乎没有API可用于此,应用内购买只是一种交易媒介。 - isklikas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接