2014-12-18 1 views
0

Наличие двух устройств, которым необходимо сохранить передачу данных в фоновом режиме или в LockScreen.Передача файла фона gcdasyncsocket

Основной ресурс о фоновом доступене на https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

До сих пор я с нетерпением жду, чтобы понять, как это предполагается реализовать такие вышеупомянутую поведение: в случае, когда передача находится в стадии разработки и один из приложения (или оба) входят в фон. Очевидно, что мы уже работаем с возобновляемым управлением передачей.

Я собирал окурки и ответы о, и я закончил с следующим:

  1. Убедитесь каждый сокет backgroundable.

    [socket performBlock:^{ 
         [socket enableBackgroundingOnSocket]; 
        }]; 
    
  2. Чтобы сохранить фоновый режим, даже если в экране блокировки, я прочитал ответ о том, что мы должны иметь что-то вроде в конце didFinishLaunchingWithOptions но какой код находится в [себе] backgroundHandler метод?

    BOOL backgroundAccepted = [[UIApplication sharedApplication] 
    setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }]; 
    if (backgroundAccepted) 
        NSLog(@"background handler accepted"); 
    
    return YES; 
    
  3. метод делегата applicationDidEnterBackground из UIApplication показывает

    - (void)applicationDidEnterBackground:(UIApplication *)application { 
    NSLog(@"=== DID ENTER BACKGROUND ==="); 
        if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) 
        NSLog(@"Multitasking Supported"); 
    else 
        return; 
    
    // Shall I remove my KVO observers when in background?? I guess NOT, right? :D 
    //[[NSNotificationCenter defaultCenter] removeObserver:self]; 
    
    UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
    NSLog(@"End of tolerate time. Application should be suspended now if we do not ask more 'tolerance'"); 
    // [self askToRunMoreBackgroundTask]; This code seems to be unnecessary. I'll verify it. 
    }]; 
    
    if (bgTask == UIBackgroundTaskInvalid) 
        NSLog(@"This application does not support background mode"); 
    else 
        NSLog(@"Application will continue to run in background"); 
    
    // Start the long-running task and return immediately. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    
    }); 
    

ответ

0

Я получил это работает после этого урока, но выглядит как GCDAsyncSocket больше не поддерживается, так что будет работать только на iOS7.

http://www.objc.io/issue-5/multitasking.html

Чтобы сделать фоновую передачу файлов под прошивкой 8 Я использую AFNetworking библиотеку (http://afnetworking.com)