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

  • 做交易
  • 交易进入“已购买”状态时,输入
  • ,检索SKDownload并开始下载
  • 完成下载后,我们可以将事务声明为“已完成”

  • 这可以。
    假设我们要还原所有购买的内容,这是因为我们删除并重新安装了我们的应用程序,或者仅仅是因为我们将其安装在其他设备上。现在,有关此主题的WWDC 2012会议已经确认了这一点,当您还原所有购买时,您将获得要还原的完整目录,但您可能不想下载所有这些。在这种情况下,您应该为用户提供选择要下载的内容的选择,然后将所选产品的SKDownload排队;一旦下载终止并且内容已成功安装,您可以声明事务已完成。
    会话视频没有说的是您应该处理被拒绝或延迟的下载。据我所知,没有办法将SKDownload保存到某个地方,以后再找它,也没有API可以向iTunes询问这样的事情“给我已经购买的产品的SKDownload”。
    因此,根据我的说法,有两种方法可以解决这种情况:

  • 您将要求再次还原未购买的东西;这不是优雅,但有效

  • 您开始该过程,然后暂停它;这将在以后恢复。但是此解决方案有几个缺点:您无法控制系统如何管理SKDownload,并且如果在一定时间后可能会取消。我从未尝试过这种解决方案。

  • 是否有人面对这个问题并找到了更好的解决方案?用Apple提出增强请求是否有意义?

    最佳答案

    我总是按照您的建议进行操作,只是“重新购买”已购买的物品,这样它就可以正常进行购买。在完成下载之前,您不能将事务标记为已完成。因此,如果您暂停它,并且应用程序再次启动时该应用程序消失,则队列将消失并尝试完成购买,这将再次启动下载逻辑。当我打开应用程序完成购买时,随着用户不断弹出该提示框,这似乎更令人讨厌。

    SKDownload文档说;

    您的应用程序永远不会直接创建SKDownload对象。取而代之的是,在处理了付款之后,您的应用会读取交易对象的downloads属性,以检索与交易相关的一系列SKDownload对象。

    10-07 19:40
    查看更多