gpt4 book ai didi

ios - 如何创建一个新的 NSUrlSession(在第一个 session 失效之后)

转载 作者:行者123 更新时间:2023-11-29 10:27:10 28 4
gpt4 key购买 nike

按照 Apple 的建议,在我的应用程序下载每个文件之后,我对 NSURLSession 使用 finishandinvalidate 方法。然后应用程序必须下载新的更新文件,但我无法创建新 session 。创建 session 的方法是这样的:

- (NSURLSession *)backgroundSession
{
NSString* sessionIdentifier=@"com.liuk.pf";
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:sessionIdentifier];

static NSURLSession *session = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
session = [NSURLSession sessionWithConfiguration:configuration
delegate:self delegateQueue:nil];
});
return session;
}

最佳答案

我解决了我的问题。我使用的是 Apple 建议的这段代码:

- (NSURLSession *)backgroundSession
{
/*
Using disptach_once here ensures that multiple background sessions with the same identifier are not created in this instance of the application. If you want to support multiple background sessions within a single process, you should create each session with its own identifier.
*/
static NSURLSession *session = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.example.apple-samplecode.SimpleBackgroundTransfer.BackgroundSession"];
session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
});
return session;
}

然后我的 nsurlsession 是静态的并且只创建了一次。

现在我在 nsobject 的 init 方法中创建 nsurlsession

self = [super init];
if (self) {
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.my.myapp"];

_session= [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];

}
return self

关于ios - 如何创建一个新的 NSUrlSession(在第一个 session 失效之后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31606303/

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