我在AppDelegate中调用updateApplicationContext方法,以检查并向Apple Watch发送用户名。
NSDictionary *applicationDict = @{@"status" : m.customer.first_name};
[[WCSession defaultSession] updateApplicationContext:applicationDict error:nil];
当观看应用程序处于后台并且iOS应用程序唤醒时。调用iOS中的updateApplicationContext方法,并在WatchOS中调用didReceiveApplicationContext方法。但是,当Watch app在后台时调用didReceiveApplicationContext时,我无法设置标签文本。如果在调用didReceiveApplicationContext时监视应用程序处于活动状态,则标签文本将更改。
watchOS中的委托方法:
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]){
let message : String = applicationContext["status"] as! String
messageLabel.setText(message)
}
问题的原因是什么?我应该保留手表应用程序在后台时获取的值,并在调用willActivate时更改文本吗?
答案 0 :(得分:0)
点亮你的
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]){
let message : String = applicationContext["status"] as! String
messageLabel.setText(message)
}
扩展委托中的方法,如果应用程序处于后台或ViewController处于活动状态时捕获更新。 我有一个相同的问题,结果是didReceiveApplicationContext方法被按预期调用。但随后测试它有时需要几秒钟才能在后台获取数据。所以我有时会启动我的应用程序,并且对标签没有更新感到困惑。问题是在View Controller激活后会传递数据。