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;
}
相关文章推荐
- iOS开发之AsyncSocket使用教程(刚刚)
- iOS中几种数据持久化方案
- 如何快速成为iOS游戏开发达人
- IOS 预处理语句
- iOS开发-Day11-C的复习
- IOS 预处理语句
- iOS开发下载文件速度计算(刚刚)
- iOS开发按钮点击操作的实现
- iOS开发遇见的坑之二:工程文件中插件和自身工程命名冲突
- iOS 集成银联支付(绕过文档的坑,快速集成)
- iOS 添加滚动scrollView自动滚动广告页
- iOS Sprite Kit教程之场景的切换
- iOS开发-CoreMotion框架(加速计和陀螺仪)
- iOS Sprite Kit教程之场景的切换
- iOS Layer动画的KeyPath
- iOS工程中删除默认的并使用自建的ViewController后黑屏
- iOS中几种数据持久化方案
- iOS路径沙盒文件管理(转载)
- iOS开发图片控件(ImageView)绑定代码并显示一张图片
- iOS开发——keychain的使用