gpt4 book ai didi

ios - 使 Apple 托管的应用内购买内容仅通过 WiFi 下载

转载 作者:技术小花猫 更新时间:2023-10-29 10:52:07 25 4
gpt4 key购买 nike

我有一个大的 (>1GB) 应用程序内购买,我想使用 Apple 托管的下载来交付。 Apple 文档称,Apple 托管的 IAP 内容对可通过蜂窝连接下载的大小没有限制。我希望能够确保仅在通过 WiFi 连接时才允许购买。

在下载过程中,用户可能会走出家门并过渡到移动网络。那时我想暂停或取消下载,直到 WiFi 再次可用。

我提出了一个 TSI,Apple 的回应是“我们的工程师已经审查了你的请求并得出结论,没有支持的方法来实现所需的功能”

使用Reachability似乎是可行的在开始下载之前检查连接类型,并在下载期间使用观察者委托(delegate)来确保手机没有切换到手机。

这会可靠地工作吗?有更好的方法吗?

此外,关于在下载过程中保持控制,Apple 文档中并不清楚在后台运行的 Apple 托管下载是在我的应用进程中,还是发生在进程外。换句话说,如果我的应用程序被终止,下载是否保证会停止,或者它是否会在我的应用程序的控制之外继续?

更新:根据一些经验,这个问题有点没有实际意义。持续下载数据需要手机有WiFi连接和外接电源。如果没有这些,下载会在屏幕关闭后暂停一会儿——我猜是手机的电源管理。此外,IAP 下载已停止,即使您的应用程序崩溃,它也会继续(尽管明确终止应用程序会停止下载)。当您的应用重新启动时,将调用 StoreKit 委托(delegate)来完成下载和购买。

最佳答案

您可以编写一个“下载管理器”来监控网络状态,并在支付队列上调用pauseDownloads:resumeDownloads:。看看here如何观察网络变化。

关于进程内下载与专用进程,我认为它发生在进程内。查看API,我们被告知仅当交易状态为SKPaymentTransactionStatePurchased时才对SKDownload对象进行排队,但是没有API可以让我们获取所有购买状态的交易并且当前有排队的下载(就像我们在新的 NSURLSession API 中一样,其中一种模式在外部守护进程中处理下载)。这一点,以及一些在尝试下载时恰好崩溃的应用程序的经验让我相信它正在处理中。在这些崩溃的应用程序中,我必须恢复购买以重新开始下载,这与 StoreKit 中公开的 API 兼容。


另一个建议是,如果您可以自己托管内容,则可以使用 Apple 新的 NSURLSession API,您可以在其中明确告诉它仅通过 WiFi 下载。

关于ios - 使 Apple 托管的应用内购买内容仅通过 WiFi 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com