Ausgabe
Ist es möglich, die iPhone-App von der watchOS 3-App aus zu aktivieren?
Der erste Teil des Codes war für watchOS 2 ausreichend, aber selbst die beiden Teile des Codes funktionieren nicht für watchOS 3:
Initialisierung:
if ([WCSession isSupported]) {
WCSession* session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
Bei einer anderen Methode:
if ([WCSession isSupported]) {
WCSession* session = [WCSession defaultSession];
if (session.reachable) { // <-- RETURNS FALSE
NSDictionary *message = @{@"action":@"wakeup"};
[session sendMessage:message replyHandler:nil errorHandler:nil];
}
}
Lösung
Apple hat folgenden Code vorgeschlagen:
- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState error:(NSError *)error {
if ([WCSession isSupported]) {
WCSession* session = [WCSession defaultSession];
if (session.activationState == WCSessionActivationStateActivated) {
NSDictionary *message = @{@"action":@"wakeup"};
[session sendMessage:message replyHandler:nil errorHandler:nil];
}
}
}
Swift-Version:
guard WCSession.isSupported() else {
return
}
let session = WCSession.default
if session.activationState != .notActivated {
session.activate()
}
if session.activationState == .activated {
let message = ["action":"wakeup"]
session.sendMessage(message, replyHandler: nil)
}
Beantwortet von – Dmitry
Antwort geprüft von – Clifford M. (FixError Volunteer)