iCloud Key-Value-Store-Synchronisationsprobleme (NSUbiquitousKeyValueStoreDidChangeExternallyNotification nicht aufgerufen)

Ich schreibe ein kleines universelles Spiel für iOS. Der Highscore wird geräteübergreifend über einen iCloud-Schlüssel- / Wertspeicher synchronisiert.

as neueste Ergebnis erhalten:

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
    }

Speichern eines neuen Highscores

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")
        }
    }

Aus irgendeinem Grund werden die Ergebnisse jedoch nicht synchronisiert.

keine Fehlekeine Abstürzekeine Nullwerte

Ich erhalte immer die höchste Punktzahl vom aktuellen Gerät, niemals die, die bei anderen Geräten erzielt wurde.

Kann der Grund in itunesconnect liegen oder stimmt etwas mit meinem Code nicht? Ich benutze ein iPad und ein iPhone zum Testen. Beide sind in meinem eigenen icloud-Konto angemeldet.

Ich melde mich für die Änderungen wie folgt an:

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
    }

Aber die Funktion 'icloudKeyValueChanged' wird niemals aufgerufen.

iCloud-Funktionen sind anscheinend alle in Ordnung:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage