2011-11-05 7 views
6

El nuevo servicio de iCloud tiene muchas configuraciones posibles. ¿Cómo puedo saber si el dispositivo de mi usuario está configurado para enviar imágenes tomadas a un servidor de iCloud en lugar de almacenarlas solo en el dispositivo?iOS - Cómo saber si la capacidad de transferencia de fotos de iCloud está habilitada

+0

¿Está hablando de Photo Stream o está hablando de copias de seguridad de iCloud? –

+0

@MichaelDautermann: estoy hablando de transmitir fotos, pero leyendo su comentario, estoy hablando de cualquier medio que pueda enviar las fotos de iPhone a la iCloud de una manera legible, así que supongo que las copias de seguridad están en ese ámbito. – Oliver

Respuesta

1

Si desea saber si se activa iCloud simplemente podría llamar:

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil]; 
if (cloudURL != nil) { 
    // iCloud is available 
} 

Esto le puede dar una pista si iCloud está disponible en absoluto. Si desea usar iCloud para almacenar imágenes, puede crear sus propias cosas. No estoy muy seguro de lo que planeas hacer.

+0

Solo quiero mostrar un aviso si las imágenes tomadas con mi aplicación van a estar almacenadas en iCloud. – Oliver

1

Mientras le das a un identificador válido contenedor ubicuidad debajo método debe devolver YES:

static NSString *UbiquityContainerIdentifier = @"ABCDEFGHI0.com.acme.MyApp"; 

- (BOOL) iCloudIsAvailable 
{ 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSURL *ubiquityURL = [fileManager URLForUbiquityContainerIdentifier:UbiquityContainerIdentifier]; 
    return (ubiquityURL) ? YES : NO; 
} 

Sin embargo, he encontrado que llamar URLForUbiquityContainerIdentifier: podría tomar tiempo (varios segundos) la primera vez en una sesión . Entonces, solo asegúrese de llamar esto en segundo plano para no bloquear la UI temporalmente:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(backgroundQueue,^{ 
    BOOL isAvailable = [self iCloudIsAvailable] 
    /* change to the main queue if you want to do something with the UI. For example: */ 
    dispatch_async(dispatch_get_main_queue(),^{ 
     if (!isAvailable){ 
      /* inform the user */ 
      UIAlertView *alert = [[UIAlertView alloc] init...] 
      [alert show]; 
      [alert release]; 
     } 
    }); 
}); 
Cuestiones relacionadas