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;
    }

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

  • 相关阅读:
    RfcDestinationManager.UnregisterDestinationConfiguration时报错cannot unregister the given destination configuration
    SVN文件自动加锁-Win7
    linux 命令详解 sort
    Tensorflow的采样方法:candidate sampling(zhuan)
    (转载)机器学习中的目标函数、损失函数、代价函数有什么区别
    tensorflow dropout
    textcnn
    tensorflow学习笔记(三十九):双向rnn
    sklearn one_hot 操作
    sklearn 划分数据集。
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4681742.html
Copyright © 2011-2022 走看看