ios - 获取应用内购买自动续订订阅结束日期的最佳策略

标签 ios objective-c swift xcode in-app-purchase

我已经阅读了很多有关自动续订订阅 的文章,但到目前为止我的问题还没有得到满意的答案。

假设一个用户订阅了我的应用程序 1 个月,应用程序的第一个 View 包含一些只有订阅后才能看到的内容。现在想象这是第二个月订阅的第一天(自动续订后)。如果我不从苹果服务器查询到期日期,用户将看不到订阅项目,因为第一个月的到期日期已经过去了,我们需要获取新的到期日期。

我的问题是:

1- 有没有办法在不打扰用户的情况下离线获取订阅的结束日期(使用密码提示等)?如果是自动续订订阅的第一天(第二个月等)并且用户没有互联网,用户将如何获得订阅内容?如果他没有互联网,他会看到锁定的内容吗?如果是这样的话,这对我来说听起来很奇怪。

2- 如果无法离线获取自动续订订阅的到期日期,那么在不询问或提示用户的情况下获取自动续订订阅到期日期的最佳方法是什么?因为我们想要顺利地显示带有订阅内容的应用程序的第一页。我想到的是让用户在启动期间等待并从服务器检查到期日期。

我相信许多开发人员仍然关心这些问题。

最佳答案

自从我上次集成自动续订订阅以来已经有很长一段时间了,它比我预期的要难,但我可以给你一些一般性的提示和一些更具体的提示来解决你的问题。
从你的问题开始。

  • 不完全是,您可以通过从 receiptURL 获取收据来获取最新更新的收据,这是我发现的一个真正的灰色区域。我从来没有机会准确了解收据何时自动更新,这可能发生在 Apple 向您收费之后(当然此更新需要连接)。当您在另一台设备上恢复购买时,这似乎不会发生。
  • 是的,当您有机会验证收据时,您可以将过期日期存储在某个地方(可能以安全的方式),并且仅在当天之后的一两天之前尝试再次验证它。如果您愿意,您也可以在之后申请宽限期。

    其他提示:
  • 您必须创建一种恢复购买的方式,否则您的应用将被拒绝
  • 在沙盒中,第一次启动时收据将不存在,但在生产中,应用程序将始终有收据,可能没有订阅信息,但确实存在。因此,如果您想在沙盒环境中模拟某些用例,最好在应用程序启动后立即恢复购买。
  • 恢复购买总是需要用户名和密码,似乎也需要刷新收据

也许这些信息有些过时了,我做了与 iOS7 的集成,但一直没有机会更新它。

关于ios - 获取应用内购买自动续订订阅结束日期的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44561176/

相关文章:

iphone - KissXML 不返回字符串

java - 如何导入 Java 库并在我的 IOS(Swift) 项目 Xcode 9 中使用它

swift - 所有下载完成后停止事件指示器

ios - 在范围内找不到 'SessionManager'?

ios - 如何测量渲染字符串的实际高度?

iOS7 - 存储按下按钮后使用的 NSDate 值

ios - 将数据从任何 View Controller 传递到 iOS 中的一个主视图 Controller

objective-c - 我应该使用 == 还是 [NSManagedObject isEqual :] to compare managed objects in the same context?

iphone - Google Maps iOS SDK 集成不加载 map

ios - 从 swift 代码中遵循 Objective 中定义的协议(protocol)时出错