繁体   English   中英

后台WatchOS / WatchConnectivity中的didReceiveApplicationContext方法

[英]didReceiveApplicationContext method in background WatchOS/WatchConnectivity

我在AppDelegate中调用updateApplicationContext方法以检查用户名并将其发送到Apple Watch。

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

当手表应用程序在后台运行且iOS应用程序唤醒时。 在iOS中调用updateApplicationContext方法,在WatchOS中调用didReceiveApplicationContext方法。 但是,当Watch应用程序在后台时调用didReceiveApplicationContext时,我无法设置标签的文本。 如果在调用didReceiveApplicationContext时监视应用程序处于活动状态,则标签文本会更改。

watchOS中的委托方法:

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

问题的原因可能是什么? 我应该保留手表应用程序在后台时获取的值,并在调用willActivate时更改文本吗?

把你的

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

如果应用处于活动状态,则当App在后台或在ViewController中时,扩展委托中的方法可捕获更新。 我有一个同样的问题,事实是didReceiveApplicationContext方法得到了预期的调用。 但随后进行测试有时有时需要几秒钟才能在后台获取数据。 因此,有时我启动了我的应用程序,并对标签没有更新感到困惑。 问题在于,View Controller处于活动状态后,数据已交付。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM