Domanda

Questa è la frase da Apple Documenti: "Se iCloud non è configurato, chiedere agli utenti se vogliono configurarlo (e, preferibilmente, trasferirli su Impostazioni di avvio se vogliono configurare iCloud)."

Come posso controllare se iCloud è configurato o meno e come le impostazioni di lancio per icloud?

È stato utile?

Soluzione

Modifica
Se ci si rivolge iOS6 o superiore è possibile utilizzare [[NSFileManager defaultManager] ubiquityIdentityToken];. Per esempio l'utilizzo consultare @Dj S' risposta :).
E 'più veloce e più facile che la soluzione originale che è stato pensato per le persone destinate iOS5 e soprattutto

risposta originale
Come documentato in iOS App Programming guide - iCloud bagagli . Che possono essere controllati chiedendo l'URL del contenitore ubiquità al file manager:)

Fino a quando si fornisce un identificatore contenitore di ubiquità valida sotto metodo deve restituire YES

- (BOOL) isICloudAvailable
{
    // Make sure a correct Ubiquity Container Identifier is passed
    NSURL *ubiquityURL = [[NSFileManager defaultManager] 
        URLForUbiquityContainerIdentifier:@"ABCDEFGHI0.com.acme.MyApp"];
    return ubiquityURL ? YES : NO;
}

Tuttavia, ho trovato che URLForUbiquityContainerIdentifier: potrebbe richiedere alcuni secondi la prima volta all'interno di una sessione (ho usato in iOS5 quindi le cose potrebbero essere diverse ora). Mi ricordo di usare qualcosa di simile a questo:

dispatch_queue_t backgroundQueue = 
   dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(backgroundQueue,^{
   BOOL isAvailable = [self isICloudAvailable]
  /* 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];
       }
   });
});

Altri suggerimenti

Proprio per integrare la risposta di cui sopra, se solo si vuole sapere se iCloud è disponibile per la vostra applicazione, per esempio
1. nessun account iCloud è configurato, o
2. I documenti e dati è disattivata (per tutte le applicazioni), o
3. I documenti e dati è disattivata per la vostra applicazione solo

quindi è possibile utilizzare NSFileManager's ubiquityIdentityToken per iOS 6 e superiori .
Se il valore è pari a zero, quindi account iCloud non è configurato. In caso contrario, account iCloud è configurato.

id token = [[NSFileManager defaultManager] ubiquityIdentityToken];
if (token == nil)
{
    // iCloud is not available for this app
}
else
{
    // iCloud is available
}

Si noti che in base al Documenti di Apple , si può chiamare dal thread principale.

Poiché questo metodo restituisce in tempi relativamente brevi, si può chiamare al momento del lancio e si può chiamare da filo conduttore della tua app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top