2016-08-01 10 views
0

Ich rufe die updateApplicationContext-Methode in AppDelegate auf, um den Benutzernamen an Apple Watch zu senden und zu überprüfen.Methode didReceiveApplicationContext im Hintergrund WatchOS/WatchConnectivity

NSDictionary *applicationDict = @{@"status" : m.customer.first_name}; 
[[WCSession defaultSession] updateApplicationContext:applicationDict error:nil]; 

Wenn Watch-App im Hintergrund ist und iOS-App aufwacht. Die updateApplicationContext-Methode in iOS wird aufgerufen und die Methode didReceiveApplicationContext wird in WatchOS aufgerufen. Wenn DidReceiveApplicationContext aufgerufen wird, wenn sich Watch App in dem Hintergrund befindet, kann ich Text der Beschriftung jedoch nicht festlegen. Wenn die Überwachungs-App aktiv ist, wenn didReceiveApplicationContext aufgerufen wird, wird der Beschriftungstext geändert.

Delegatmethode in watchOS:

func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]){ 
     let message : String = applicationContext["status"] as! String 
     messageLabel.setText(message) 
    } 

Was Grund des Problems sein kann? Soll ich den Wert behalten, der abgerufen wird, wenn sich die Überwachungs-App im Hintergrund befindet, und den Text ändern, wenn wilkommenActivate aufgerufen wird?

Antwort

0

Setzen Sie Ihre

func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]){ 
    let message : String = applicationContext["status"] as! String 
    messageLabel.setText(message) 
} 

Methode in der Verlängerung Delegate Updates zu fangen, wenn App im Hintergrund oder in Viewcontroller ist, wenn sie aktiv ist. Ich hatte ein gleiches Problem stellt sich heraus, dass die didReceiveApplicationContext-Methode wie erwartet aufgerufen wird. Aber dann testet es manchmal ein paar Sekunden, um Daten im Hintergrund zu bekommen. Also habe ich manchmal meine App gestartet und war verwirrt, dass das Label nicht aktualisiert wurde. Problem war, dass Daten nach dem Aktivwerden des View Controllers übermittelt wurden.