Ich habe in einem schnellen Datei deklariert Benachrichtigung Name, Ziel Mitgliedschaft der beiden Haupt-App und heute widget hat:Beobachten Mitteilung in Heute Widget, das von der Haupt App gebucht
let SpecialKey = Notification.Name("howLongNotif")
Da ist in meinem Haupt-App-View-Controller, ich veröffentliche Benachrichtigung, wenn Standort aktualisiert wird (Hintergrundmodus für Standortaktualisierungen aktiviert ist):
NotificationCenter.default.post(name: SpecialKey, object: nil, userInfo: nil)
In meinem heute widget viewDidLoad, ich beobachte es wie folgt aus:
NotificationCenter.default.addObserver(self, selector: #selector(TodayViewController.dataReceived), name: SpecialKey, object: nil)
und haben:
func dataReceived(_notification: NSNotification) {
print("data received")
}
Aber dataReceived
Funktion nie aufgerufen wird.
Ich getestet, indem Sie die Beobachter und DataReceived-Funktion auf Haupt-App und es funktioniert gut dort.
Problem mit NSUserDefaults ist, dass um Live-Informationen zu erhalten, ich muss weiter schreiben und lesen von ihnen, die nicht wie eine gute Lösung für Live-Informationen klingt. – Kashif
Es gibt keinen guten Mechanismus für diese Art von Live-Informationen. Es besteht eine gute Chance, dass Ihre Hauptanwendung nicht einmal ausgeführt wird, wenn Ihre heutige Erweiterung verwendet wird. Welche Art von Live-Informationen möchten Sie kommunizieren? –
Meine Haupt-App läuft im Hintergrundmodus und kommuniziert kontinuierlich (jede Sekunde) den Standort mit dem heutigen Widget. – Kashif