Question

Voici la phrase d'Apple Docs: « Si iCloud n'est pas configuré, demandez aux utilisateurs s'ils veulent le configurer (et, de préférence, de les transférer sur Paramètres de lancement s'ils veulent configurer iCloud). »

Comment puis-je vérifier si iCloud est configuré ou non et comment les paramètres de lancement pour iCloud?

Était-ce utile?

La solution

Edit: Si vous ciblez iOS6 ou au-dessus, vous pouvez utiliser [[NSFileManager defaultManager] ubiquityIdentityToken];. Par exemple d'utilisation s'il vous plaît consulter @Dj S » réponse :).
Il est plus rapide et plus facile que la solution originale qui a été conçu pour les personnes ciblant iOS5 et au-dessus

Réponse originale Comme indiqué dans Guide de programmation iOS App - iCloud Storage . Cela peut être vérifié en demandant l'URL du conteneur ubiquité au gestionnaire de fichiers:)

Tant que vous fournir un identifiant de conteneur d'ubiquité valide ci-dessous méthode doit renvoyer OUI

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

Cependant, j'ai trouvé que URLForUbiquityContainerIdentifier: peut prendre plusieurs secondes la première fois dans une session (je l'ai utilisé dans iOS5 si les choses pourraient être différentes aujourd'hui). Je me souviens d'utiliser quelque chose comme ceci:

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

Autres conseils

Juste pour compléter la réponse ci-dessus, si vous voulez seulement savoir si iCloud est disponible pour votre application, par exemple
1. aucun compte iCloud est configuré, ou
2. Les documents et données est désactivée (pour toutes les applications), ou
3. Les documents et données est désactivé pour votre application uniquement

vous pouvez alors utiliser NSFileManager's ubiquityIdentityToken pour iOS 6 et plus .
Si la valeur est nulle, alors compte iCloud n'est pas configuré. Dans le cas contraire, compte iCloud est configuré.

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

Notez que selon docs d'Apple , vous pouvez l'appeler depuis le thread principal.

Parce que cette méthode retourne, vous pouvez appeler relativement rapidement au moment du lancement et vous pouvez l'appeler de fil conducteur de votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top