3

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

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

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

    4

    1 回答 1

    1

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

    SKDownload 文档说;

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

    于 2013-07-26T07:00:23.970 回答