AppleWatchとiPhoneの通信 watchkit swift 開発
watchkitとiOS間でのデータ共有の方法の1つです。
iOS(iPhone)側
※extensionでのみ記述
import WatchConnectivity //WCSessionDelegate extension ViewController: WCSessionDelegate { let wcSession = WCSession.default() func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) { } @available(iOS 9.3, *) func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { print("activationDidComplete") } func sessionDidBecomeInactive(_ session: WCSession) { print("sessionDidBecomeInactive") } func sessionDidDeactivate(_ session: WCSession) { print("sessionDidDeactivate") } // AppleWatch viewDidLoad()などから呼び出す func isSupportAppleWatch() { if WCSession.isSupported() { wcSession.delegate = self wcSession.activate() } } }
viewDidLoad()側で isSupportAppleWatch() を呼び出してください。
watchOS(AppleWatch側)
import WatchKit import Foundation import WatchConnectivity class InterfaceController: WKInterfaceController,WCSessionDelegate { let wcSession = WCSession.default() override func awake(withContext context: Any?) { super.awake(withContext: context) // iPhoneとAppleWatchの連携チェック if WCSession.isSupported() { wcSession.delegate = self wcSession.activate() } } override func willActivate() { super.willActivate() } override func didDeactivate() { super.didDeactivate() } func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { // iPhoneとの接続チェック if self.wcSession.isReachable { // iPhone側へ送信するデータ let watchMessage = ["": ""] // iPhone側へデータを送信 self.wcSession.sendMessage(watchMessage, replyHandler: {(reply) -> Void in // iPhone側から正常に返答があった場合 print(reply) }){(error) -> Void in // TimeOutや型不正、データ長オーバーなど正常に返答がなかった場合 print(error) } } }