ios后臺更新和下載

n7w77 9年前發布 | 1K 次閱讀 Objective-C IOS

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
    [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
    NSLog(@"Launched in background %d",UIApplicationStateBackground == application.applicationState);
    return YES;
}
// 1.利用Background Fetch

  • (void)application:(UIApplication )application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { NSURLSessionConfiguration sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; NSURL url = [[NSURL alloc] initWithString:@"http://127.0.0.1/data.json"]; NSURLSessionDataTask *task = [session dataTaskWithURL:url
                                       completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                           if (error) {
                                               completionHandler(UIBackgroundFetchResultFailed);
                                               return;
                                           }
                                           completionHandler(UIBackgroundFetchResultNewData);
                                       }];
    
    [task resume]; } // 2.利用Remote Notification / 推送的內容 { "aps" : { "content-available" : 1 }, "content-id" : 42 }/
  • (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { NSLog(@"Received remote notification with userInfo %@", userInfo);

    NSNumber contentID = userInfo[@"content-id"]; NSString downloadURLString = [NSString stringWithFormat:@"http://yourserver.com/downloads/%d.mp3", [contentID intValue]]; NSURL* downloadURL = [NSURL URLWithString:downloadURLString];

    NSURLRequest request = [NSURLRequest requestWithURL:downloadURL]; NSURLSessionDownloadTask task = [[self backgroundURLSession] downloadTaskWithRequest:request]; task.taskDescription = [NSString stringWithFormat:@"Podcast Episode %d", [contentID intValue]]; [task resume]; completionHandler(UIBackgroundFetchResultNewData); }

  • (NSURLSession )backgroundURLSession { static NSURLSession session = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{

      NSString *identifier = @"io.objc.backgroundTransferExample";
      NSURLSessionConfiguration* sessionConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:identifier];
      session = [NSURLSession sessionWithConfiguration:sessionConfig
                                              delegate:self
                                         delegateQueue:[NSOperationQueue mainQueue]];
    

    }); return session; } </pre>

 本文由用戶 n7w77 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!