gpt4 book ai didi

ios - 网络连接与使用 NSURLSession 的后台上传

转载 作者:行者123 更新时间:2023-12-01 16:43:42 25 4
gpt4 key购买 nike

我正在开发允许用户拍摄最初保存在设备中的图像和视频的应用程序。每当设备连接到网络(移动数据或 wifi)时,这些都需要上传到服务器。

现在如果我使用 NSURLSessionUploadTask ,数据也在后台上传,但如果没有网络,我会在 -didCompleteWithError: 收到回调委托(delegate),现在任务结束了。现在,当设备有网络连接时,我该如何恢复任务。

我想做一些检查可达性以及设备是否可达开始上传任务之类的事情。

我能想到的一种方法是使用 后台获取 检测连接并安排上传任务。

这将是一个企业应用程序,因此不需要批准。

以下是代码

NSURLSessionConfiguration *config = [NSURLSessionConfiguration         
backgroundSessionConfiguration:@"background" ];

NSURLSession *upLoadSession = [NSURLSession sessionWithConfiguration:config delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
NSURL *url = [NSURL URLWithString:@"http://www.t9l.com/rest/test/httprawdata"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
NSString* str=@"nitin=asd";
[request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];

self.uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:filePath] ;

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

[self.uploadTask resume];

最佳答案

您的后台上传应该可以跨网络工作。如果您在 -didCompleteWithError: 中返回一个上传错误状态,您可以再次对相同的上传进行排队。执行此操作时是否在网络上无关紧要,操作系统应该在可以/想要的时候处理上传。

后台获取是当它出现时,尽管插件和 wifi 是很好的开始。当 fetch 回调发生时,您肯定会有一些连接。您应该能够在 fetch 回调期间对后台上传任务进行排队。

您还可以注册后台地理围栏的“精简版”版本,每当检测到新网络或手机信号塔切换时,它都会在后台通知您。参照。 -[CLLocationManager startMonitoringSignificantLocationChanges] .

关于ios - 网络连接与使用 NSURLSession 的后台上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946605/

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