2016-08-01 2 views
0

Apple Watch에 사용자 이름을 확인하고 보내려면 AppDelegate에서 updateApplicationContext 메서드를 호출했습니다.didReceiveApplicationContext 메서드 백그라운드에서 WatchOS/WatchConnectivity

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

시계 앱이 백그라운드에서 iOS 앱이 깨어날 때. iOS의 updateApplicationContext 메소드가 호출되고 didReceiveApplicationContext 메소드가 WatchOS에서 호출됩니다. 그러나 Watch 응용 프로그램이 백그라운드에있을 때 didReceiveApplicationContext가 호출되면 레이블 텍스트를 설정할 수 없습니다. didReceiveApplicationContext가 호출 될 때 watch app가 활성화되면 레이블 텍스트가 변경됩니다. watchOS에서

위임 방법 :

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

은 어떤 문제의 이유가 될 수 있는가? 윌 앱이 백그라운드에있을 때 가져온 값을 유지하고 willActivate가 호출 될 때 텍스트를 변경해야합니까?

답변

0

이 활성화되면 앱은 배경이나의 ViewController에있는 경우 업데이트를 잡으려고 확장 위임에

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

방법을 넣습니다. didReceiveApplicationContext 메서드가 예상대로 호출되는 것과 같은 문제가 발생했습니다. 그러나 때때로 그것을 시험하기 위해 백그라운드에서 데이터를 얻는 데 몇 초가 걸립니다. 그래서 때로는 내 앱을 시작했고 라벨이 업데이트되지 않는다고 혼란스러워했습니다. 문제는 View Controller가 활성화 된 후에 데이터가 전달된다는 것입니다.