Проблемы синхронизации хранилища ключей и значений ключей iCloud (NSUbiquitousKeyValueStoreDidChangeExternallyNotification не вызывается)
Я пишу небольшую универсальную игру для iOS. Рекорд будет синхронизироваться между устройствами через хранилище ключей / значений iCloud.
получить новейшую оценку:
func retrieveHighestScore() -> Int64 {
let iCloudScore: Int64 = NSUbiquitousKeyValueStore.defaultStore().longLongForKey(KeyValueKeyClassification.KeyHighscore.toRaw())
let localScore: Int64 = Int64(NSUserDefaults.standardUserDefaults().integerForKey(KeyValueKeyClassification.KeyHighscore.toRaw()))
var result: Int64 = 0
if localScore > iCloudScore {
storeNewHighscore(localScore)
result = localScore
} else {
storeNewHighscore(iCloudScore)
result = iCloudScore
}
return result
}
хранение нового рекорда
func storeNewHighscore(newScore: Int64) {
NSUbiquitousKeyValueStore.defaultStore().setLongLong(newScore, forKey: KeyValueKeyClassification.KeyHighscore.toRaw())
NSUserDefaults.standardUserDefaults().setInteger(Int(newScore), forKey: KeyValueKeyClassification.KeyHighscore.toRaw())
if NSUbiquitousKeyValueStore.defaultStore().synchronize() {
println("Synched Successfully")
}
}
однако по некоторым причинам оценки не синхронизируются.
нет ошибокбез сбоевнет нулевых значенийя всегда получаю самый высокий балл от текущего устройства, а не тот, который был достигнут на других.
Может быть причина в itunesconnect или что-то не так с моим кодом? я использую ipad и iphone для тестирования, оба вошли в свою учетную запись icloud.
я регистрируюсь для таких изменений:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
NSNotificationCenter.defaultCenter().addObserver(self, selector: "icloudKeyValueChanged", name: NSUbiquitousKeyValueStoreDidChangeExternallyNotification, object: nil)
if NSUbiquitousKeyValueStore.defaultStore().synchronize() {
println("initial Synched Successfully")
}
return true
}
но функция icloudKeyValueChanged никогда не вызывается.
Возможности iCloud все в порядке, как кажется: