zoukankan      html  css  js  c++  java
  • 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;
    }

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

  • 相关阅读:
    SVN 客户端的使用
    day36_Spring学习笔记_04_SVN
    VisualSVN Server 的使用图解(windows版本)
    day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记
    VisualSVN Server 的安装(windows版本)
    【代码规范神器】阿里巴巴Java开发规约IDE插件使用教程(P3C)
    学了这四招,你在Linux上观看Netflix视频不发愁
    如何在Fedora或CentOS上使用Samba共享
    Fedora 23如何安装LAMP服务器
    HTTP/HTTPS自动加密上网方案
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4681742.html
Copyright © 2011-2022 走看看