2017-11-08 3 views
0

Ich möchte Benachrichtigungen erhalten, wenn sich der Status des iCloud Accounts ändert.CKAccountChanged Benachrichtigungen nicht erhalten

melde ich mich also für diese Benachrichtigungen mit:

NotificationCenter.default.addObserver(self, 
             selector: #selector(iCloudAvailabilityDidChange), 
             name: .CKAccountChanged, 
             object: nil) 

und erwarten, dass iCloudAvailabilityDidChange entsprechend aufgerufen:

@objc func iCloudAvailabilityDidChange(_ notification: Notification) { 
    handleICloudAccountStatus() 
} 

diese Benachrichtigungen Um zu überprüfen, habe ich einen Haltepunkt in iCloudAvailabilityDidChange, und die App laufen unter Xcode.
Ich dann Home, öffnen Sie die Systemeinstellung App, und loggen Sie sich in einem iCloud-Konto oder loggen Sie sich aus.

Ich erwartete Xcode den Haltepunkt zu treffen, aber das ist nicht der Fall.
Was könnte falsch sein?

EDIT:

Vielleicht ist das Problem auf die folgenden Informationen in dem docs zu CKAccountChanged verwendet ist, die ich nicht verstehe:
Die Benachrichtigung wird durch eine Instanz der Klasse CKContainer gesendet. Wenn keine Instanzen der Klasse vorhanden sind, werden keine Benachrichtigungen gesendet.
Was ich nicht verstehe ist, dass CKContainer.default() immer definiert werden sollte.

Antwort

0

Problem gelöst:

Zuerst hat man den Behälter zuzugreifen, z.B. von

let container = CKContainer.default() 

Dies instanziiert das Containerobjekt, das solche Benachrichtigungen senden kann.

Zweitens, um die Benachrichtigung zu erhalten, muss man die App starten, auf die Home-Taste tippen, Systemeinstellungen öffnen, sich beim iCloud-Konto anmelden oder aus dem iCloud-Konto herausrufen, und zurück zur App wechseln. Nur dann wird die Benachrichtigung zugestellt.

Verwandte Themen