【问题标题】:iOS In-App purchase subscriptions integration with a third party systemiOS 应用内购买订阅与第三方系统集成
【发布时间】:2013-08-03 04:30:29
【问题描述】:

我需要为一个已经在其网站上订阅的系统构建一个应用程序。看起来 Apple 不允许使用任何自己的订阅并强制将任何应用与 iOS 应用内订阅集成。

有没有办法整合两个订阅系统?主要问题是用户可以通过 iTunes 管理 iOS 订阅,如果通过 iTunes 停止,我无法找到是否可以获取有关此信息并停止现有系统中的订阅。

那么是否有可能收到有关未订阅 iTunes 用户的通知?

【问题讨论】:

    标签: ios in-app-purchase subscription


    【解决方案1】:

    使用第三方订阅

    首先,可以在您的应用中支持现有的订阅系统,但它必须除了 App Store 订阅。此外,您必须非常小心您使用的 UI。您不能提示用户绕过 App Store 并通过您的服务器进行购买,但您可以让现有订阅者使用他们之前可能通过您的网站获得的凭据进行登录。

    也就是说,Apple 对 App Store 中允许和不允许的内容的裁决可能相当反复无常。我曾开发过完成此类事情的应用程序,但它们一直是为相当知名的杂志出版物服务的。不能保证他们会允许每个人都这样做。

    检测未订阅的 App Store 订阅

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

    设置订阅类型时,您可以指定订阅的持续时间。因此,如果您在收到收据时将交易日期记录在 SKPaymentTransaction 中,您可以通过将订阅的持续时间添加到交易日期来准确确定订阅的到期时间。

    如果是自动续订订阅,您将在续订时收到新收据。因此,一旦您通过后端服务器验证了这一点,您就可以根据新的交易日期更新到期日期。如果您在第一张收据到期之前没有收到新收据,则可能是用户取消了订阅。

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

    有关详细信息,请参阅Auto-Renewable Subscriptions 文档。

    测试自动续订订阅

    值得注意的是,当您在 App Store 沙盒环境中测试自动续订订阅时,各种订阅类型的长度显着缩短,以便于测试。例如,1 周的订阅在沙盒环境中仅持续 3 分钟。您可以在iTunes Connect Developer Guide 中查看完整的时间列表。

    【讨论】:

    • 谢谢。实际上这是我在想的,但无法正式化。另外:我发现了这种集成的一个很好的例子 - nytimes.com 和相关的 iOS 应用程序
    【解决方案2】:

    因此,您希望从网站购买服务的人能够使用应用程序,就像他们从应用程序购买中购买服务一样,并且在应用程序购买中人们能够像人们一样加入服务通过网站加入?据我所知,Apple 不允许您像您所说的那样通过其他服务付款,但是假设有人从该应用程序中购买了该服务。应该发生的事情是这笔钱将转移到公司。然后在付款之后,您应该包含一些代码来执行新用户支付服务后网站所做的事情,因此将他的帐户创建为付费帐户。然后,应用程序还应该有一个登录屏幕,注册用户(无论他们从哪里注册)都可以登录到应用程序并使用该服务。现在的问题确实是,如果通过 iTunes 停止订阅,你永远不会知道,尽管解决这个问题的一种方法是检查这家公司的服务器,该服务器应该监控来自一个帐户的收入。然后,如果该用户已停止付款(或停止订阅),您将能够从应用程序停止服务。并且您应该在订阅期限过去后重新检查服务器是否付款,假设每周订阅应该每周检查一次。 (对不起,我会做一个评论,但我没有足够的声誉)

    【讨论】:

    • 如何自动检查通过 Apple 系统完成的付款?
    • @DmitryKhryukin 嗯,这很简单,在应用内购买之后,您显然可以运行一些代码。在那里,您可以按照我的建议创建一个帐户或/并编辑一个默认为 FALSE 的 BOOL 变量,该变量将位于 plist 中,应用程序将从该 plist 中读取。然后,您将将此 BOOL 更改为 TRUE,以便应用程序能够自动检查。如果您指的是检查订阅是否仍然有效,我指的不是 Apple 的服务器,我指的是公司服务器,它将(并且应该)记录每个帐户的交易。
    • @DmitryKhryukin 现在,如果您在公司的服务器上发现客户在订阅期限过后仍未付款,那么您就知道他的订阅已经结束。您还应该有一个 NSDate 检查,它将检查事件的日期并测量从到期日期开始的时间间隔。如果这是负数或零,那么您应该检查该帐户的公司服务器,将 BOOL 设置为 FALSE,并且仅当最近发生的交易使订阅在以后有效时,再次使 BOOL 为 TRUE 并将帐户验证为再次购买。
    • @DmitryKhryukin 作为一个有代表的人。 350 表示,“没有办法说订阅什么时候到期。你必须在你的服务器上观看,应用程序必须要求用户更新订阅。除了日志之外,也没有办法检查当前设备是否有活动订阅它在您的服务器上,每次都询问您的服务器。这些订阅的一切都令人沮丧。”为什么?因为苹果几乎没有这方面的 API,所以应用内购买只是一种交易媒介
    猜你喜欢
    • 2011-12-26
    • 2018-06-01
    • 2016-01-25
    • 2013-01-20
    • 2021-11-28
    • 1970-01-01
    • 2013-10-18
    • 2017-06-09
    • 2016-06-26
    相关资源
    最近更新 更多