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;

}

时间: 2024-11-13 03:00:19

ios后台更新和下载的相关文章

关于iOS后台问题( 一 )(ios后台刷新,后台定位,后台下载,真后台)

关于iOS的后台,以下引用一些文段进行一下脑补,请同学们大致看一下,有个基础,原文出处 ----------------------------------------------------------------------------------------------- OS 7中,实际上APP拥有四种后台模式,无论是哪一种后台机制,均需要利用苹果给予的相应后台接口实现.IOS7系统中,开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作.一,无后台仅推送第 一种后台方式为传统

iOS 后台运行实现

iOS 后台运行的规则 应用的运行状态分为以下五种:Not running:应用还没有启动,或者应用正在运行但是途中被系统停止.Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码).一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态.唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户去响应某些(诸如电话来电.有未读短信等)事件的时候.Active:当前应用正在前台运行,并且接收事件.这是应用正在前台运行时所处的正常状态Su

iOS 后台运行 类型

iOS后台运行,需要有特定的类型才可以进行.这些内容并不是一直不变的,苹果也在逐步的更新这些内容. 本文内容是2015年11月03日时苹果支持的后台运行类型. 这是官方连接地址 其中较为重要的是下面这张表,我已截图出来. 解释一下: 1. 音频播放和录制: 2. 位置更新: 3. VOIP: *4. 后台下载(此处指预更新): 5. 使用External Accessory framework库(通常是通过MFI认证的蓝牙应用): 6. 蓝牙应用(使用Core Bluetooth framewo

iOS 后台

1.Background Audio,这是后台的音频,这个很早之前便有,也是iOS设备中用得最多的后台应用,调用这个接口可以实现后台的音乐播放. 2.Location Services,这是后台的定位,系统会拥有统一页面进行管理. 3.VoIP,后台语音服务,类似Skype通话应用需要调用,可进行后台的语音通话. 4.Newsstand,报刊杂志后台自动下载更新,其能够自动实时更新. 5.Background Task  Completion,这个接口早在iOS 4时候便拥有,其可以供任意类型的

iOS后台定位实现

iOS后台定位实现 (2013-01-24 16:43:12) 工作中碰到一个定位的应用场景:app需要在后台运行,实时上传用户地理位置. 苹果对iOS的规范性在提升了app的品质的同时也带来了对开发者的限制.翻阅了各种官方文档和资料,得出结论如下: 1.实现后台定位有2种方式: standard location service(调用CLLocationManager的startUpdatingLocation) significant-change location service(调用CL

iOS 后台运行实现 --备用

文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以,1.音乐2.location 3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线程 UIDevice* device = [UIDevice c

iOS中 流媒体播放和下载 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博 iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容之后,整个文件会保存在手机上. 实时流媒体 实时流媒体是一边接收数据包一边播放,本地不保留文件副本,实时流式传输总是实时传送,可以实时实况转播,支持随机访问,用户可以快进或者快退以观看前面或后面的内容.实时流媒体传输

iOS之网络数据下载和Json数据解析

iOS之网络数据下载和Json数据解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据,以及如何显示数据和图片的异步下载显示 涉及到的知识点: 1.NSURLConnection异步下载封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 (1)什么是网络应用? 一般情况下, iPhone的计算机, 照相机不需要从网络上下载数据也能运行, 所以这

iOS后台运行

我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间.还有三种类型的可以运行在后以,1.音乐2.location3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线程 UIDevice* device = [UIDevice curren