后台WatchOS / WatchConnectivity中的didReceiveApplicationContext方法

时间:2016-08-01 14:30:22

标签: ios objective-c swift apple-watch watch-os-2

我在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时更改文本吗?

1 个答案:

答案 0 :(得分:0)

点亮你的

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

扩展委托中的方法,如果应用程序处于后台或ViewController处于活动状态时捕获更新。 我有一个相同的问题,结果是didReceiveApplicationContext方法被按预期调用。但随后测试它有时需要几秒钟才能在后台获取数据。所以我有时会启动我的应用程序,并且对标签没有更新感到困惑。问题是在View Controller激活后会传递数据。