Search code examples
iosobjective-cmacosiclouduser-accounts

How to detect if iCloud account on a device changed?


How to detect if iCloud account being used on a device changed?

A user signs out from Settings > iCloud and another user signs in his/her account.

How to detect this change when the app is opened?


Solution

  • Just add an observer for the notification with name NSUbiquityIdentityDidChangeNotification

    [[NSNotificationCenter defaultCenter]
        addObserver: self
           selector: @selector (iCloudAccountAvailabilityChanged:)
               name: NSUbiquityIdentityDidChangeNotification
             object: nil];
    

    If a user signs out of iCloud, such as by turning off Documents & Data in Settings, the ubiquityIdentityToken method returns nil. To enable your app to detect when a user signs out and signs back in, register for changes in iCloud account availability. - Apple Documentation

    http://developer.apple.com/library/mac/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html