ubiquityIdentityToken vs. CKContainer accountStatusWithCompletionHandler

¿Qué método es mejor para decidir qué usuario ha iniciado session?

let ubiquityIdentityToken = NSFileManager.defaultManager().ubiquityIdentityToken 

devuelve un token y el cliente puede comparar si es el mismo que el anterior. La ventaja de que devuelve token si el dispositivo también está desconectado.

accountStatusWithCompletionHandler devuelve solo un valor de estado, pero no un ID o token sobre quién está conectado. Así que en el modo fuera de línea es inútil.

¿Estoy bien?

Mi otro problema, que a veces incluso el usuario está conectado y en línea ubiquityIdentityToken devuelve nil.

¿Cómo recuperas la identificación de usuario en el lanzamiento?

Si está utilizando CloudKit, el método CKContainer accountStatusWithCompletionHandler es cómo verificar si el usuario ha iniciado session en iCloud o no (compatible desde iOS 8.0). El Inicio Rápido de CloudKit muestra un ejemplo de cómo usarlo.

fetchUserRecordIDWithCompletionHandler es la forma en que debe get el ID de logging del usuario, que está incluido en ese contenedor de CloudKit pero igual para esa count de iCloud en todos los dispositivos.

En iOS 9.0, también tendrá CKAccountChangeNotification , que notificará a su aplicación cuando cambie el estado de iCloud en el dispositivo.