我正在构建一个针对iOS 8.0的应用程序,需要下载高达250Mb的文件。我有一个使用Alamofire
的下载代码版本,但我最近用一个纯粹的NSURLSession
实现取而代之。这个新的实现在模拟器和运行iOS 9.2(13C75)的iPhone 5S上按预期工作。无论我是通过XCode
和物理连接还是通过TestFlight
安装,它都可以在我的手机上运行。我删除了应用程序,重新启动了手机,然后重新安装,并始终正确完成下载。我的一位同事拉出了代码,并能够成功地从XCode
模拟它。在TestFlight中未调用的NSURLSessionDelegate方法安装
但是,所有协作者设备上的下载都会失败。他们通过TestFlight
安装应用程序,并设置为内部测试人员。一位合作者也有一台运行iOS 9.2(13C75)的iPhone 5S。基于Alamofire
的实现在通过TestFlight
部署到那些相同的设备并且很少其他代码已经改变时按预期工作。
我已经添加了一些远程日志记录,我可以看到,在失败的设备上,下载被正确触发,并且我创建的每个下载任务都有我可以登录的taskIdentifier
。但是,调用方法都不是NSURLSessionDelegate
或NSURLSessionDownloadDelegate
。
您有什么建议可以排除故障?
这可能与TestFlight
问题有关吗?我目前的下一步是尝试替代TestFlight
。最终,如果可能的话,我希望能够通过TestFlight
部署beta。我在XCode 7.2 (7C68)
中使用Swift 2.1.1
。
“NSURLSessionDelegate或NSURLSessionDownloadDelegate中没有一个”是否添加了委托,如果是,是否正确保留? – Vig
它被添加并且这些方法在模拟器和我自己的物理设备上被调用。我认为我不需要做任何特别的事情来确保在Swift中的保留,但请让我知道,如果有什么我应该确保为此做! –
你是对的我忘了它在模拟器和设备上运行的事实。也没有意识到它的迅速....无论如何,我能想到的是检查AppTransportSecurity,但如果它在模拟器上工作,那么我认为问题在其他地方 – Vig