我们正在构建一个iPhone应用程序,我们遇到了在后台下载应用程序内购买的问题,我想知道是否有人有解决方案......
我们的应用内购买量非常大35-40mb,每次购买包含5个项目,每个7-8mb,因此手机通常会进入待机状态,或者用户在下载购买之前切换应用程序,因此这对于应用程序来说非常重要购买是在后台无缝下载的。
当我们下载购买时,我们必须从服务器下载大约35-40mb并同时更新应用程序中的本地sqlite数据库。我们已经测试了在前台下载项目并且工作正常,我们已经做了一些处理以保持下载过程在后台继续,下载仍在继续,我们可以看到它在调试器中工作。
但是我们有以下问题......
用户开始下载 应用程序上的下载页面显示应用程序正在下载 用户离开应用或手机进入待机状态 用户返回应用
此时,应用程序启动画面会加载并停留在屏幕上,直到其中一个8mb下载完成,完成后再切换到应用程序上的下载页面。这对用户来说真的很困惑,因为他们认为应用程序崩溃了。
那么我们如何管理应用程序内购买,以便在用户按下下载时在后台启动下载,并且在下载过程中应用程序正常运行?因此用户离开应用程序,当它们返回时,它会显示包含下载进度的正确页面。用户在应用内导航,工作正常。
一些观察......
我必须连续五次运行NSURLConnection才能执行下载,因为每个应用内购买都有5个项目。
我注意到的事情是,当第一次下载正在进行时,即使用户按下主页按钮,也不会调用“didEnterBackground”方法,但是在第一次下载过程完成后,“didEnterBackground”方法会被调用。如果用户将应用程序放入后台然后返回到前台,则应该调用“didEnterForeground”,但不是。
我使用不同的线程然后“MainThread”下载数据,但仍然运行相同的问题。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以阻止iOS在下载过程中进入待机状态:
[UIApplication sharedApplication].idleTimerDisabled = YES;
答案 1 :(得分: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