ios - sesion - no me llega el codigo de verificacion de apple id
Comprobar si el usuario ha iniciado sesiĆ³n en iCloud? Swift/iOS (3)
Aquí tienes - espero que se explique a sí mismo. Para obtener más información sobre los documentos de Apple para la función NSFileManager a continuación.
func isICloudContainerAvailable()->Bool {
if let currentToken = NSFileManager.defaultManager().ubiquityIdentityToken {
return true
}
else {
return false
}
}
Vea el extracto a continuación: Un token opaco que representa la identidad de iCloud del usuario actual (solo lectura) Cuando iCloud está actualmente disponible, esta propiedad contiene un objeto opaco que representa la identidad del usuario actual. Si iCloud no está disponible por algún motivo o si no hay un usuario registrado, el valor de esta propiedad es nulo.
¿Hay alguna manera de verificar y ver si un usuario ha iniciado sesión en iCloud cuando abre la aplicación? Quiero poder dirigirlos a la página de configuración si no han iniciado sesión, y si han iniciado sesión en iCloud y han usado la aplicación antes, quiero saltar la página de inicio de sesión ...
Busqué en la documentación de iCloud y Cloudkits de Apple, ¡pero no pude encontrar nada que pudiera ser de ayuda! ¿Es esto posible hacer?
Creo que se prefiere este método asíncrono para que no bloquee mientras está comprobando.
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStat, error) in
if (accountStat == .Available) {
print("iCloud is available")
}
else {
print("iCloud is not available")
}
}
Si solo quiere saber si el usuario ha iniciado sesión en iCloud, se puede utilizar el método síncrono:
if FileManager.default.ubiquityIdentityToken != nil {
print("iCloud Available")
} else {
print("iCloud Unavailable")
}
Sin embargo, si desea saber por qué iCloud no está disponible, puede usar el método asíncrono:
CKContainer.default().accountStatus { (accountStatus, error) in
switch accountStatus {
case .available:
print("iCloud Available")
case .noAccount:
print("No iCloud account")
case .restricted:
print("iCloud restricted")
case .couldNotDetermine:
print("Unable to determine iCloud status")
}
}
Si desea utilizar el método asíncrono pero no le importa por qué, debe verificar que el estado de cuenta esté available
, en lugar de verificar que no sea noAccount
:
CKContainer.default().accountStatus { (accountStatus, error) in
if case .available = accountStatus {
print("iCloud Available")
} else {
print("iCloud Unavailable")
}
}