【问题标题】:How to retrieve an SKDownload of an already purchased content如何检索已购买内容的 SKDownload
【发布时间】:2013-07-19 07:14:59
【问题描述】:

存在托管内容时,应用购买流程的标准是:

  • 进行交易
  • 当交易进入“已购买”状态时,检索 SKDownload 并开始下载
  • 下载完成后,我们可以将交易声明为“完成”
  • 这很好。 想象一下,我们想要恢复所有购买的内容,这是因为我们删除并重新安装了我们的应用程序,或者仅仅是因为我们将它安装在另一台设备上。现在,WWDC 2012 会议证实了这一点,当您恢复所有购买时,您将获得要恢复的内容的完整列表,但您可能不想下载所有内容。在这种情况下,您应该让用户选择要下载的内容,然后将所选产品的 SKDownload 排队;一旦下载终止并且内容安装成功,您就可以宣布交易完成。 会议视频没有说明的是您应该如何处理被拒绝或延迟的下载。据我所知,没有办法将 SKDownload 保存在某处并稍后检索它,也没有 API 可以向 iTunes 询问这样的事情“给我这个已购买产品的 SKDownload”。 因此,根据我的说法,有两种选择可以绕过这种情况:

  • 您将要求再次恢复未购买的东西;这并不优雅,但它有效
  • 你开始这个过程,然后你暂停它;这将在稍后恢复。但是这个解决方案有几个缺点:您无法控制系统如何管理 SKDownload,如果在一定时间后它可能会取消。我从未尝试过这个解决方案。
  • 其他人是否遇到过这个问题并找到了更好的解决方案?向 Apple 提出增强请求有意义吗?

    【问题讨论】:

      标签: ios in-app-purchase iap-hosted-content skdownload


      【解决方案1】:

      我总是按照您的建议去做,只是“重新购买”购买的物品,以便它通过正常的购买流程。在完成下载之前,您无法将交易标记为已完成。因此,如果您暂停它并且应用程序在您的应用程序再次启动时死机,队列将关闭并尝试完成购买,这将再次启动您的下载逻辑。这似乎更烦人,因为当我打开应用完成购买时,用户不断弹出这个东西。

      SKDownload 文档说;

      您的应用从不直接创建 SKDownload 对象。相反,在处理完付款后,您的应用会读取交易对象的下载属性以检索与交易关联的 SKDownload 对象数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多