@@ -17,7 +17,7 @@ @implementation RNBackgroundDownloader {
17
17
NSURLSession *urlSession;
18
18
NSURLSessionConfiguration *sessionConfig;
19
19
NSMutableDictionary <NSString *, RNBGDTaskConfig *> *urlToConfigMap;
20
- NSMutableDictionary <NSURLSessionTask *, RNBGDTaskConfig *> *taskToConfigMap;
20
+ NSMutableDictionary <NSNumber *, RNBGDTaskConfig *> *taskToConfigMap;
21
21
NSMutableDictionary <NSString *, NSURLSessionDownloadTask *> *idToTaskMap;
22
22
NSMutableDictionary <NSString *, NSData *> *idToResumeDataMap;
23
23
NSMutableDictionary <NSString *, NSNumber *> *idToPercentMap;
@@ -81,8 +81,9 @@ - (void)lazyInitSession {
81
81
}
82
82
83
83
- (void )removeTaskFromMap : (NSURLSessionTask *)task {
84
- RNBGDTaskConfig *taskConfig = taskToConfigMap[task];
85
- [taskToConfigMap removeObjectForKey: task];
84
+ NSNumber *taskId = @(task.taskIdentifier );
85
+ RNBGDTaskConfig *taskConfig = taskToConfigMap[taskId];
86
+ [taskToConfigMap removeObjectForKey: taskId];
86
87
[urlToConfigMap removeObjectForKey: task.currentRequest.URL.absoluteString];
87
88
[[NSUserDefaults standardUserDefaults ] setObject: [self serialize: urlToConfigMap] forKey: URL_TO_CONFIG_MAP_KEY];
88
89
if (taskConfig) {
@@ -125,7 +126,7 @@ + (void)setCompletionHandlerWithIdentifier: (NSString *)identifier completionHan
125
126
126
127
NSURLSessionDownloadTask *task = [urlSession downloadTaskWithRequest: request];
127
128
RNBGDTaskConfig *taskConfig = [[RNBGDTaskConfig alloc ] initWithDictionary: @{@" id" : identifier, @" destination" : destination}];
128
- taskToConfigMap[task] = taskConfig;
129
+ taskToConfigMap[@( task.taskIdentifier) ] = taskConfig;
129
130
idToTaskMap[identifier] = task;
130
131
idToPercentMap[identifier] = @0.0 ;
131
132
@@ -179,7 +180,7 @@ + (void)setCompletionHandlerWithIdentifier: (NSString *)identifier completionHan
179
180
@" percent" : percent
180
181
}];
181
182
taskConfig.reportedBegin = YES ;
182
- taskToConfigMap[task] = taskConfig;
183
+ taskToConfigMap[@( task.taskIdentifier) ] = taskConfig;
183
184
idToTaskMap[taskConfig.id ] = task;
184
185
idToPercentMap[taskConfig.id ] = percent;
185
186
} else {
@@ -192,7 +193,7 @@ + (void)setCompletionHandlerWithIdentifier: (NSString *)identifier completionHan
192
193
193
194
#pragma mark - NSURLSessionDownloadDelegate methods
194
195
- (void )URLSession : (nonnull NSURLSession *)session downloadTask : (nonnull NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL : (nonnull NSURL *)location {
195
- RNBGDTaskConfig *taskCofig = taskToConfigMap[downloadTask];
196
+ RNBGDTaskConfig *taskCofig = taskToConfigMap[@( downloadTask.taskIdentifier) ];
196
197
if (taskCofig != nil ) {
197
198
NSFileManager *fileManager = [NSFileManager defaultManager ];
198
199
NSURL *destURL = [NSURL fileURLWithPath: taskCofig.destination];
@@ -215,7 +216,7 @@ - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTas
215
216
}
216
217
217
218
- (void )URLSession : (NSURLSession *)session downloadTask : (NSURLSessionDownloadTask *)downloadTask didWriteData : (int64_t )bytesWritten totalBytesWritten : (int64_t )totalBytesWritten totalBytesExpectedToWrite : (int64_t )totalBytesExpectedToWrite {
218
- RNBGDTaskConfig *taskCofig = taskToConfigMap[downloadTask];
219
+ RNBGDTaskConfig *taskCofig = taskToConfigMap[@( downloadTask.taskIdentifier) ];
219
220
if (taskCofig != nil ) {
220
221
if (!taskCofig.reportedBegin ) {
221
222
[self sendEventWithName: @" downloadBegin" body: @{@" id" : taskCofig.id , @" expectedBytes" : [NSNumber numberWithLongLong: totalBytesExpectedToWrite]}];
@@ -243,7 +244,7 @@ - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTas
243
244
}
244
245
245
246
- (void )URLSession : (NSURLSession *)session task : (NSURLSessionTask *)task didCompleteWithError : (NSError *)error {
246
- RNBGDTaskConfig *taskCofig = taskToConfigMap[task];
247
+ RNBGDTaskConfig *taskCofig = taskToConfigMap[@( task.taskIdentifier) ];
247
248
if (error != nil && error.code != -999 && taskCofig != nil ) {
248
249
if (self.bridge ) {
249
250
[self sendEventWithName: @" downloadFailed" body: @{@" id" : taskCofig.id , @" error" : [error localizedDescription ]}];
0 commit comments