2016-08-01 34 views
0

我調用AppDelegate中的updateApplicationContext方法來檢查用戶名並將其發送給Apple Watch。didReceiveApplicationContext方法在後臺WatchOS/WatchConnectivity

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時更改文本嗎?

回答

0

把你

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

方法在擴展委派趕上更新,如果應用程序在後臺或視圖控制器是活躍的時候。 我有一個相同的問題,結果didReceiveApplicationContext方法得到按預期調用。但是接着測試它有時需要幾秒鐘才能在後臺獲取數據。所以我有時候啓動了我的應用程序,並且感到困惑,因爲標籤沒有更新。問題是在View Controller啓動後數據纔會交付。