0

我们正在构建一个 iPhone 应用程序,我们在后台下载应用程序内购买时遇到问题,我想知道是否有人有解决方案……

我们的应用内购买相当大 35-40mb,每次购买由 5 件商品组成,每件 7-8mb,因此手机通常会进入待机状态,或者用户在下载购买之前切换应用程序,因此下载应用内购买至关重要在后台无缝。

当我们下载购买时,我们必须从服务器下载大约 35-40mb,并同时更新应用程序中的本地 sqlite 数据库。我们已经测试了在前台下载项目并且它工作正常,并且我们已经做了一些处理以保持下载过程在后台继续并且下载继续并且我们可以看到它在调试器中工作。

但是我们有以下问题……</p>

用户开始下载 应用上的下载页面显示应用正在下载 用户离开应用或手机进入待机 用户返回应用

此时应用程序启动画面加载并停留在屏幕上,直到完成 8mb 下载之一,完成后切换到应用程序上的下载页面。这真的让用户感到困惑,因为他们认为应用程序已经崩溃。

那么我们如何管理应用内购买,以便当用户按下下载时,它会在后台开始下载,并且在下载过程中应用正常运行?因此,用户离开应用程序,当他们返回时,它会显示正确的页面以及下载进度。用户在应用程序内导航,它工作正常。

一些观察...

我必须连续运行 NSURLConnection 5 次才能执行下载,因为每次应用内购买有 5 个项目。

我注意到的是,当第一次下载正在进行时,即使用户按下主页按钮,也不会调用“didEnterBackground”方法,但在第一次下载过程完成后,会调用“didEnterBackground”方法。如果用户将应用程序置于后台,然后返回前台,则应该调用“didEnterForeground”,但事实并非如此。

我正在使用与“MainThread”不同的线程下载数据,但仍在同一问题中运行。

任何帮助将非常感激。

4

2 回答 2

0
  • 看看AFNetworking,它被许多人使用并加载到不同的线程上。在自述文件中有一个带有进度的文件下载示例。
  • 您可以防止 iOS 在下载过程中进入待机模式:

    [UIApplication sharedApplication].idleTimerDisabled = YES;
    
于 2013-01-18T13:59:56.267 回答
0

试试看……一个新的AFNetworking'extension AFDownloadRequestOperation

此类具有恢复部分下载的额外支持,使用临时目录并具有帮助计算正确下载进度等的特殊块

“不要忘记将 shouldResume 设置为 YES” :)

对于 AFDownloadRequestOperation,您还可以检查此AFNetworking not resuming download

UPD

在最坏的情况下..您可以尝试"Task Completion for Long-Running Tasks""Task-Specific Background Processing"在后台.. http://www.codeproject.com/Articles/124159/Hour-21-Building-Background-Aware-Applications

于 2013-01-22T22:57:41.020 回答