ios背景更新和下载

ios背景更新和下载

by 吴雪莹

- (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;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/mengfanrong/p/4681742.html