【问题标题】:iOS - Auto Renewable Subscriptions ExpiryiOS - 自动更新订阅到期
【发布时间】:2016-03-25 02:23:48
【问题描述】:

问题 1:

我已阅读有关订阅的 Apple 文档,但我仍然不确定是否有可能从 iOS 9 开始在不联系 Apple 服务器的情况下从收据中获取自动续订订阅的到期日期?这有意义吗?

问题 2

目前我正在做的是让自动续订订阅到期:

  • 使用 [[NSBundle mainBundle] appStoreReceiptURL] 并继续将收据转换为 base 64 字符串

  • 创建一个包含此收据数据和共享密钥的字典

  • 将此字典转换为 JSON 字符串

  • 将此 JSON 字符串发送至https://sandbox.itunes.apple.com/verifyReceipt

  • 返回作为应用商店回复收到的 JSON 化收据字典

  • 从 latest_receipt_info 字典中的 expires_date_ms 中获取到期日期

我不完全确定这是否正确,因为根据文档,无法在 App Store 和设备之间实现安全链接(我目前正在这样做)。事实上,文档指出我需要自己的服务器来为我与 App Store 通信 (https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1)。

这是可以接受的方法还是我需要自己的服务器?如果我需要自己的服务器,有人可以指导我如何设置它吗?

注意:每当使用 OpenSSL 进行本地验证进行购买时,我都会对非消耗性和消耗性应用内购买执行收据验证。所以应该没问题。

提前致谢。

【问题讨论】:

    标签: ios json date subscriptions


    【解决方案1】:

    以下是在您的应用程序中实施自动更新服务的步骤。

    1. 每当您的应用在应用购买中完成时。您应该将收据数据(采用 Base 64 编码)发送到您的服务器,它将与特定的用户配置文件一起存储(这只是示例)

    2)您需要在您的服务器上创建 cron 作业。此 cron 作业每天运行一次,用于验证每张收据。

    3)在此验证过程中,您只需调用您在问题中提到的苹果服务。

    1. 在每次通话中,您都会收到来自苹果的回复,其中苹果将提供自动续订的所有详细信息。如果任何用户更新了他的服务,那么您将在响应中找到另一个对象。其中到期日延长。

    希望这会对你有所帮助。

    【讨论】:

    • 感谢您的回答!关于我的第一个问题,是否可以在不先将收据发送到 App Store 进行验证/解析的情况下获得自动续订订阅到期日期?换句话说,我可以直接从收据中本地检查到期日期,而不做我在问题 2 中所做的事情,而是自己解析收据吗?再次感谢。
    • 你打错了。这不是克隆作业,而是 cron 作业:)
    • latest-receipt-info 有一个收据信息数组。我是否需要解析所有这些并使用时间戳找到哪个是最新的?
    猜你喜欢
    • 2013-10-27
    • 2019-08-16
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2013-07-30
    • 2019-07-19
    相关资源
    最近更新 更多