2014-04-27 3 views
0

Ceci est mon code:Impossible de déterminer si iCloud est activé sur mon appareil

- (IBAction)aBackupSetup:(UIButton *)sender { 

// check to see if this device is iCloud enabled; display message if not 
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; 
if (ubiq) { 
    NSLog(@"AppDelegate: iCloud access!"); 
} else { 
    NSLog(@"AppDelegate: No iCloud access (either you are using simulator or, if you are on your phone, you should check settings"); 
} 

Je suis en train de déterminer si iCloud est activé sur le périphérique (iPad). Lorsque j'exécute ce code en tapant sur un UIButton dans mon application, il enregistre "Aucun accès iCloud ...". J'ai vu ce code partout SO et Internet - pourquoi ça ne marche pas sur mon appareil? (iCloud IS est activé sur l'iPad).

+0

Eh bien, iCloud est-il activé? Vous n'avez pas mentionné cela. –

+0

Oups ... oui, c'est activé sur l'iPad. – SpokaneDude

+0

Et le paramètre 'Documents & Data' est-il activé dans Paramètres> iCloud? –

Répondre

2

Raisons pour lesquelles vous souhaitez toujours obtenir un résultat nul ici:

  1. iCloud n'est pas réellement activée (si vous dites qu'il était, si ce n'est pas cette fois-ci)
  2. iCloud est activé sur le périphérique mais "Documents & Data" ne l'est pas. "iCloud" couvre beaucoup de services, donc juste être activé en général ne suffit pas. Sans documents & Données, les applications ne peuvent pas enregistrer de données dans iCloud.
  3. Votre profil d'approvisionnement n'inclut pas iCloud ou est cassé de manière à empêcher iCloud de fonctionner. exigences de profil d'approvisionnement comprennent:

    1. Vous devez activer iCloud pour l'ID d'application dans la section « Certificats, Identifiers & Profils » du centre de dev iOS.
    2. L'ID d'application ne peut pas inclure de caractère générique (*), il doit s'agir d'un ID complet.
    3. Votre ID d'application dans Xcode doit correspondre exactement à celui de l'étape précédente.
    4. Vous devez générer un profil d'approvisionnement après avoir effectué ce qui précède afin de disposer d'un profil qui reflète le droit iCloud. Si vous possédez un ancien profil d'approvisionnement pour cette application qui ne comprend pas iCloud, vous devez le supprimer et le remplacer par un nouveau.

Si vous ressentez l'un de ces faux pas, vérifier l'URL simplement revenir à zéro. Il n'y a pas de condition d'erreur, mais comme l'accès à iCloud n'est pas activé, il n'y a pas non plus d'URL.

Pour iOS 6 et plus vous êtes mieux vérifier la disponibilité iCloud à l'aide

id ubiquityToken = [[NSFileManager defaultManager] ubiquityIdentityToken]; 

C'est beaucoup plus rapide. Consulter l'URL peut impliquer des connexions réseau, mais cette méthode retourne immédiatement. Vous aurez toujours besoin de l'URL pour lire/écrire des données dans iCloud, mais si vous voulez juste vérifier la disponibilité, utilisez cette méthode.

+0

Salut Tom ... J'ai tout validé, créé de nouveaux profils de provisioning juste au cas où, et il retourne encore 'nul' quand il s'exécute sur l'appareil, où Docs et Data sont activés. D'autres idées d'où vérifier? – SpokaneDude

Questions connexes