您的位置:首页 > 移动开发 > IOS开发

ios背景更新和下载

2015-07-28 08:00 513 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: