Я создаю приложение cloudkit и пробовал несколько способов получить NSUbiquityIdentityDidChangeNotification
, но так и не смог получить это уведомление.
Я пробовал обе эти версии кода в методах делегата didFinish
и viewDidLoad
. А я пробовал звонить из другого уведомления - UIApplicationDidBecomeActiveNotification
. Я также ставлю import Foundation
вверху файлов.
Вот основной код, который я пробовал:
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "handleIdentityChanged:",
name: NSUbiquityIdentityDidChangeNotification,
object: nil)
// И это я тоже пробовал из другого сообщения здесь а> на ТАК:
var localeChangeObserver = NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: NSOperationQueue.mainQueue()) { _ in
println("The user’s iCloud login changed: should refresh all user data.")
}
Кто-нибудь знает, как заставить это уведомление работать только для приложения cloudkit в быстром режиме? Я действительно просто хочу обнаружить изменение статуса iCloud, а затем инициировать получение userID
, если произошло изменение.
Не то чтобы мне нужен доступ к ubiquityIdentityToken
, но мне было интересно, почему бы не сохранить токен и каждый раз, когда приложение запускается, сравнивать текущий токен с тем, который находится в локальном хранилище, чтобы увидеть, является ли это другой учетной записью или nil? Поэтому, почему получение уведомления необходимо?
Кроме того, код для получения токена работает только в том случае, если я включаю «Документы iCloud», которые мне не нужны. Кто-нибудь знает последствия включения этого для социального приложения, которому это не нужно? И есть ли другой способ получить токен без включения iCloud Documents?
Это код, который я использовал для получения токена и поместил в метод делегата didFinish
, но он работает только в том случае, если документы iCloud включены:
var token = NSFileManager.defaultManager().ubiquityIdentityToken
println("token is \(token!)")