gpt4 book ai didi

ios - 从服务器下载文件一直失败,但相同的 obj-c 代码在另一个环境和 IOS 应用程序中工作

转载 作者:行者123 更新时间:2023-11-29 12:12:07 24 4
gpt4 key购买 nike

IOS 版本为 9,Xcode 7 和以下代码无法正常工作。但它适用于 IOS 版本 8、Xcode 6。

我正在使用下面的代码从服务器下载文件:

 NSURLSessionConfiguration *configuration;
if ([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] != NSOrderedAscending) {
configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"Test"];
} else {
configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"Test"];
}
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://hw13.asset.aparat.com/aparat-video/e361693675a47fa4ae758756b40a11653215108-360p__71758.mp4"]];
NSProgress *progress;

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:&progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

NSString *fileAddress = [[appDelegate GetDocumentDirectory] stringByAppendingPathComponent:@"Myfile.mp4"];
return [NSURL fileURLWithPath:fileAddress];

} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
if(error != nil){
//ERROR
[[NSFileManager defaultManager] removeItemAtPath:[filePath absoluteString]
error:nil];
[progress removeObserver:self forKeyPath:@"fractionCompleted" context:NULL];
[downloadTask cancel];
return ;
}
//SUCCESS
[progress removeObserver:self forKeyPath:@"fractionCompleted" context:NULL];
}];

[downloadTask resume];
[progress addObserver:self
forKeyPath:@"fractionCompleted"
options:NSKeyValueObservingOptionNew
context:NULL];

一直报错:

Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo={NSErrorFailingURLKey=http://hw13.asset.aparat.com/aparat-video/e361693675a47fa4ae758756b40a11653215108-360p__71758.mp4, NSLocalizedDescription=unknown error, NSErrorFailingURLStringKey=http://hw13.asset.aparat.com/aparat-video/e361693675a47fa4ae758756b40a11653215108-360p__71758.mp4}

这里是GetDocuemntsD

-(NSString *)GetDocumentDirectory{
self.fileMgr = [NSFileManager defaultManager];
self.homeDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
return self.homeDir;
}

*** 我可以将图像保存到文档目录,但我想在后台下载视频文件并向用户显示进度,但它总是失败。

我的 info.plist 有:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

最佳答案

iOS 9 在使用 HTTP 时添加了一些限制,您需要在您的 info.plist 文件中添加一个异常(exception)才能从 HTTP 下载。更多信息在这里: NSURLSession/NSURLConnection HTTP load failed on iOS 9

关于ios - 从服务器下载文件一直失败,但相同的 obj-c 代码在另一个环境和 IOS 应用程序中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com