Sie den eingebauten verwenden können in WatchConnectivity Rahmen Nachricht von iOS-App auf das gekoppelte Apple Watch zu senden.
1) Zuerst Uhr Konnektivität Sitzung sowohl in iOS App und WatchKit Erweiterung aktivieren. Auf der iOS-Seite kann es in application didFinishLaunchingWithOptions
des App-Delegate erfolgen. Auf der Watch-Seite können Sie diesen Code in applicationDidFinishLaunching
Methode der WatchKit-Erweiterung Delegate ausführen.
if WCSession.isSupported() {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
2) Senden Sie jetzt eine Nachricht von Ihrer iOS App.
let session = WCSession.defaultSession()
session.sendMessage(["message from iOS app":""], replyHandler: { reply in
// Handle reply from watch (optional)
}, errorHandler: nil)
3) Erhalten Sie die Nachricht in Ihrem WatchKit Erweiterung durch die session didReceiveMessage
Methode in Ihrer WCSessionDelegate
Delegierten Klasse implementieren.
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
if let message = message["message from iOS app"] {
NSNotificationCenter.defaultCenter().postNotificationName("myapp.reload", object: self, userInfo: ["data": message])
}
}
Nach Erhalt der Nachricht von iOS empfangen wir eine Benachrichtigung mit postNotificationName
Methode senden.
4) Abonnieren Sie diese Benachrichtigung in Ihrem InterfaceController, die aktualisiert werden muss (oder an einem anderen Ort, an dem Sie diese Updatebenachrichtigung erhalten möchten).
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "didReceiveReloadNotification:", name: "myapp.reload", object: nil)
}
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self,
name: "myapp.reload", object: nil)
}
5) Schließlich implementieren Sie die Benachrichtigungs-Handler-Methode. Hier können Sie Ihre Benutzeroberfläche aktualisieren.
func didReceiveReloadNotification(notification: NSNotification) {
let userInfo = notification.userInfo as? [String: String]
if let userInfo = userInfo, data = userInfo["data"] {
// Update UI
}
}
Hinweis: Aus Gründen der Lesbarkeit Ich bin mit Inline-Textzeichenfolge für die Benachrichtigung Namen „myapp.reload“ und die Nachrichten-Taste „Nachricht von iOS-App“. Aber in der echten App ist es besser, Eigenschaften für diese Textzeichenfolgen zu verwenden, um Tippfehler zu vermeiden.
Große Antwort! Ich möchte jedoch hinzufügen, dass dies nicht als unterstützt dokumentiert ist. Dies kann in Zukunft verhindert werden oder es wird möglicherweise keine Apple-Zertifizierung bestehen, wenn sie Watchkit-Apps akzeptieren. Obwohl es jetzt prächtig funktioniert! –