Is there a way for me to check and see if a user is logged into iCloud when they open the app up? I want to be able to direct them to the settings page if they are not logged in, and if they are logged into iCloud and have used the app before - I want to skip the sign in page....
I looked into Apple's iCloud and Cloudkits documentation but was unable to find anything that would be of assistance! Is this even possible to do?
If you just want to know if the user is logged in to iCloud, the synchronous method can be used:
if FileManager.default.ubiquityIdentityToken != nil { print("iCloud Available") } else { print("iCloud Unavailable") }
If the ubiquityIdentityToken
is nil
and you'd like to know why iCloud isn't available, you can use the asynchronous method:
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") } }
Note that this requires the use of CloudKit, which requires the CloudKit entitlement:
<key>com.apple.developer.icloud-services</key> <array> <string>CloudKit</string> </array>
If you want to use the asynchronous method but don't care about why, you should check that accountStatus
is available
, rather than checking that it is not noAccount
:
CKContainer.default().accountStatus { (accountStatus, error) in if case .available = accountStatus { print("iCloud Available") } else { print("iCloud Unavailable") } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With