今天我開始討論Watch OS的框架,想要將一個快速應用程序放在一起,但遇到了一些問題。從手錶刷新手錶應用程序
我做了一個iOS應用程序,只顯示當前的電池%以及電池的狀態。然後我想在手錶上顯示。
唯一的一次手錶應用程序將更新是當我完全關閉iOS應用程序,然後打開它,而手錶的應用程序被激活。如果我在打開iOS應用程序後打開它,我如何允許更新我的手錶應用程序?
這種伴隨着數字2.但我怎麼讓手錶應用程序獲取信息從iOS應用程序,它已經在後臺?舉個例子,假設iOS應用程序已經在後臺,我想在不打開iOS應用程序前臺的情況下獲取電池電量。
我如何設置這部分旁註 -
在iOS應用程式,在viewDidLoad
方法,我開始我的會議。
if ([WCSession isSupported]) {
wcSession = [WCSession defaultSession];
wcSession.delegate = self;
[wcSession activateSession];
}
然後打電話給我的方法來更新電池實際%和狀態。在該方法中,我有這個發送該信息到手錶:
NSDictionary *message = @{
@"message" : [NSString stringWithFormat:@"%@", [numberFormatter stringFromNumber:levelObj]],
@"message_2" : [NSString stringWithFormat:@"%ld",(long)[UIDevice currentDevice].batteryState],
};
[wcSession sendMessage:message replyHandler:nil errorHandler:^(NSError * _Nonnull error) {
NSLog(@"%@", error.localizedDescription);
}];
我還呼籲在viewDidAppear此相同的方法,所以我沒有完全重新啓動應用程序,允許的清爽觀看對方。
在手錶方面,我有viewWillActivate
方法使用與iOS端相同的激活方法,以及處理手錶應用程序從iOS端接收的方法。但它只會在我完全重啓iOS應用程序時更新。
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message {
NSLog(@"Message recieved!");
[_batteryLevelLabelW setText:message[@"message"]];
}
此外,還有處理電池狀態消息,這是有點長的代碼。
我希望我提供了大量的幫助信息。
感謝您的回覆。如果iOS應用尚未打開,該怎麼辦?如何刷新,然後在'isReachable'爲true時發送到手錶應用程序。 – Michael
@Michael如果ios應用尚未打開,你將如何獲得電池電量? – abjurato
這是我的不好。應該有不同的意思。有沒有辦法刷新電池電量,如果手錶應用程序發送一條消息詢問信息?或者我肯定會首先打開iOS嗎? – Michael