如何创建新的NSUrlSession(在第一个会话失效后)

时间:2015-07-24 09:00:00

标签: ios nsurlsession invalidation

根据Apple的建议,在我的应用程序下载每个文件后,我使用let vertex_data_source = DataSource { id: 0, attributes: vec!(vertices), current_element_array_buffer_binding: RefCell::new(None) }; 的finishandinvalidate方法。 然后应用程序必须下载新的更新文件,但我无法创建新的会话。 创建会话的方法是:

NSURLSession

1 个答案:

答案 0 :(得分:2)

我解决了我的问题。 我正在使用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