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背景更新和下载的更多相关文章

  1. iOS自动更新如何实现

    APP检测更新可以使用两种方法.第一种是和安卓等系统一样,获取自己服务器的APP版本号与已安装的APP版本号比较:第二种是根据已发布到app store上的应用版本号与已安装的APP版本号比较更新.第 ...

  2. IOS开发-第三方SDWebImage下载网络图片的使用

    从网络上请求图片时,没有使用第三方的话,下载会很慢,而且堵塞线程,还要自己处理多线程问题,效果还非常不明显,使用了SDWebImage这个第三方类库之后,下载图片就变的容易多了. SDWebImage ...

  3. 基于libUSB的USB设备固件更新程序(下载数据)(转)

    源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libU ...

  4. Unity应用的iOS热更新

    Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda •  什么是热更新 •  为何要热更新 •  如何在iOS 上对Unity 应用进行热更新 • ...

  5. 有关iOS热更新

    iOS热更新的几篇文章,看完这几篇,自己集成一下.下面说一下我集成时遇到的问题. 这是原作者的JSPatch的讲解的文章:<JSPatch – 动态更新iOS APP>.<JSPat ...

  6. 同步、更新、下载Android Source & SDK from 国内镜像站(转载)

    同步.更新.下载Android Source & SDK from 国内镜像站 转自: 同步.更新.下载Android Source & SDK from 国内镜像站 Download ...

  7. ios的网络数据下载和json解析

    ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...

  8. 同步、更新、下载Android Source & SDK from 国内镜像站

    转自: 同步.更新.下载Android Source & SDK from 国内镜像站 Download the android source from china mirrors     以 ...

  9. 体验极速Android SDK的更新与下载

    首先:国内明确一点,国内由于天朝限制了google,更新和下载Android相关资料都比较吃力,因此,本文正式宣告,此问题不再是问题-------别说话,吻我 先给点福利: 关于java(Androi ...

随机推荐

  1. 给AspNetPager分页控件添加bootstrap样式

    AspNetPager分页控件算是比较好用的一个分页控件了.想要结合bootstrap使用,官方代码入口 .pagination a[disabled]{ color: #777;cursor: no ...

  2. Java高效读取大文件(转)

    1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung(http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分. 2.在内存中读取 读 ...

  3. 三种字符编码:ASCII、Unicode和UTF-8

    原文:三种字符编码:ASCII.Unicode和UTF-8 什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字 ...

  4. [Cocos2d-x]Mac下cocos2d-x连接pomeloserver

    Pomelo 是由网易开发的基于node.js 开发的高性能.分布式游戏server框架, 也可作为高实时web应用框架. Polemo的配置这里就不赘述了,Github的wiki非常全面. 在此记录 ...

  5. poj 2689 巧妙地运用素数筛选

    称号: 给出一个区间[L,R]求在该区间内的素数最短,最长距离. (R < 2 * 10^9 , R - L <= 10 ^ 6) 由数论知识可得一个数的因子可在开根号内得到. 所以,我们 ...

  6. (一个)AngularJS获取贴纸Hello World

    一旦项目使用JQuery原创javascript,最近参加了一个项目,需要使用AngularJS.RequireJS比较框架,如汰渍.这里写一些博客,记录自己的学习过程,虽然冠以原来的名字,实际上都是 ...

  7. docker搭建基础的tomcat应用

    tomcat server是眼下比較流行的开源中间件server,以下介绍怎样使用 docker 来做一个 tomcat 数据库服务.官方的仓里没有标 OFFICIAL 的 tomcat 的镜像,只是 ...

  8. debian(wheezy) chrome beta 38.0.2x.xxx Shockwave Flash was crashed 该解决方案崩溃.

    版本号chrome beta升级到38.0.2x.xxx什么时候, flash他挂了. 调试 ./libpepflashplayer.so: /lib/x86_64-linux-gnu/libc.so ...

  9. PHP于Post和Get得到的数据写入到文件中

    有时Post要么Get越过那我们不知道什么样的形状数据,它可以是JSON格风格或只是简单地通过数据.这一次,我们能够把他写的文字,传过来的数据是什么格式了. $val = ""; ...

  10. 可视化配置以及Net应用MemCache在win7

    MemCache在win7上的可视化配置以及Net应用   惯例科普:MemCache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以 ...