iOS:后台上传大文件的问题



我有一个应用程序,可以记录和上传大文件(每个文件最多5个(

录制完成后,用户会触发一个动作,开始上传文件。

上传的内容会被注册以进行后台处理,因此如果手机进入睡眠状态,它们会继续。

我遇到的问题:

  1. 一些文件的随机内存崩溃超过4 GB
  2. 应用程序已挂起,无法启动后台上载

因此,如果用户记录的文件介于4-5gigs之间,则应用程序在上传时会随机崩溃。同时上传多个5G文件也会增加崩溃的几率。

我们目前按顺序上传文件,但遇到了我列表中的第2个问题。如果用户记录了多个5个gigs文件,并使手机处于睡眠状态,则只有第一个文件会上传,用户必须重新打开应用程序才能开始处理下一个文件。

我曾尝试使用BackgroundTasks来查看它是否可以触发上传,但后台任务从未启动,我读到只有当它认为用户即将使用手机时才会尝试启动后台任务。

我还尝试在uploadTask上使用urlSessionDidFinishEvents回调。但它似乎从未激发过,或者至少不能用于调用API请求。

有人建议启动大文件的后台文件上传吗?

我认为问题在于您可能达到了系统资源限制。发生这种情况时,系统将弹出您的二进制文件;它们被称为Jetsam事件。我建议您在设备上触发sysdiagnose事件(每个设备不同——通常同时按下音量增大、减小和侧边按钮(。

然后从Settings > Privacy > Analytics and Improvements > Analytics Data恢复日志

文件名以sysdiagnose_YEAR.MONTH.DAY_*.开头

将文件复制到Mac后(使用iOS UI中的"共享"按钮(,您可以查看具体的违规行为。

请使用检索到的特定日志信息更新您的问题。

最后,实现applicationDidReceiveMemoryWarning:是值得的,因为在这样的处理过程中,您的应用程序可能会占用大量内存。

最新更新