【WordPressカスタマイズ相談】現役プログラマが解決策を教えます

WordPress(ワードプレス)のお悩み、うまくいかなくてお困りなこと、不具合調査、新規制作依頼まで、ウェブアプリケーションエンジニアがあなたをサポートします。

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)
		}
	}
}
広告を非表示にする