如何检索已购买内容的SKDownload

时间:2013-07-19 07:15:00

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

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

  • 做交易
  • 当交易进入“已购买”状态时,检索SKDownload并开始下载
  • 下载完成后,我们可以将交易声明为“已完成”
  • 这很好。 想象一下,我们想要恢复所有购买的内容,这是因为我们删除并重新安装了我们的应用程序,或者仅仅因为我们将其安装在另一台设备中。现在,WWDC 2012会议就此主题确认了这一点,当您恢复所有购买时,您将获得要恢复的完整内容列表,但可能您不想下载所有这些内容。在这种情况下,您应该为用户提供下载哪个内容的选择,然后将所选产品的SKDownload排队;一旦下载终止并且内容安装成功,您就可以声明事务已完成。 会话视频没有说明的是您应该对拒绝或延迟下载做什么。据我所知,没有办法在某处保存SKDownload并在以后检索它,并且没有API可以向iTunes询问这样的事情“给我这个已购买产品的SKDownload”。 因此,根据我的说法,有两种方法可以解决这种情况:

  • 你会要求再次恢复未购买的东西;这不优雅,但它的工作原理
  • 你启动程序然后暂停它;这将在以后恢复。但是这个解决方案有几个缺点:你无法控制系统如何管理SKDownload,如果经过一段时间后它可以取消。我从没试过这个解决方案。
  • 其他人是否遇到过此问题并找到了更好的解决方案?用Apple打开增强请求是否有意义?

    1 个答案:

    答案 0 :(得分:1)

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

    SKDownload文档说;

      

    您的应用永远不会直接创建SKDownload对象。相反,在处理完付款后,您的应用会读取事务对象的downloads属性,以检索与该事务关联的SKDownload对象数组。