【发布时间】:2014-08-07 12:45:50
【问题描述】:
我有一个大的 (>1GB) 应用内购买,我想使用 Apple 托管的下载来交付。 Apple 文档说 Apple 托管的 IAP 内容对可以通过蜂窝连接下载的大小没有限制。我希望能够确保仅在通过 WiFi 连接时才允许购买。
在下载过程中,用户可能会走出门并转换到蜂窝网络。那时我想暂停或取消下载,直到 WiFi 再次可用。
我提出了 TSI,Apple 的回复是“我们的工程师已经审查了您的请求,并得出结论认为没有支持的方式来实现所需的功能”
在开始下载之前使用Reachability检查连接类型并在下载过程中使用观察者委托来确保手机没有切换到蜂窝电话似乎是可行的。
这能可靠地工作吗?有没有更好的方法来做到这一点?
此外,在下载进行时保持控制权方面,Apple 文档中并不清楚在后台运行的 Apple 托管下载是在我的应用程序的进程中,还是在进程外发生。换句话说,如果我的应用程序被终止,下载是保证停止还是继续在我的应用程序控制之外?
更新:凭借一些经验,这个问题有点没有实际意义。持续下载数据需要手机有 WiFi 连接和外接电源。没有这些,屏幕关闭后下载会暂停一段时间——我猜是手机的电源管理。此外,IAP 下载不在进程中,即使您的应用程序崩溃,它也会继续(尽管明确终止应用程序会停止下载)。当您的应用重新启动时,会调用 StoreKit 委托来完成下载和购买。
【问题讨论】:
-
请不要。向用户显示下载量巨大的警告并让他们决定。但不要简单地禁止通过蜂窝网络下载。
-
嗯,这是看待它的一种方式。我看待它的方式是用户没有阅读警告的后果,或者更有可能忘记下载正在进行中并且离开 wifi 可能非常严重,如果我可以避免它,我不想去那里。许多地方的手机超额费用为 100-500 美元/GB,国际漫游费用可能超过 10,000 美元/GB。 Google 会让您感受到由此产生的强烈情绪
-
Apple 不允许通过蜂窝网络下载大型(超过 50MB)应用程序。我认为将相同的逻辑应用于非常大的应用内购买内容并没有什么不同。
-
在其他任何事情之前,您应该在bugreport.apple.com打开一个功能请求
-
@LeoNatan 我快速浏览了一下,我认为你是对的,没有办法控制它,尤其是你的应用程序被终止或后台运行。按照您的建议,将使用 NSURLSession。
标签: ios in-app-purchase