シミュレータとデバイスでテストしました。時計の接続性は、一度使用した後での動作を停止します。時計の接続性は初めてではありませんが、それ以降は動作しません
私は時計 - > iPhoneからデータを渡しています。それは一度だけで動作し、その後は停止します。
アイデア?
iPhone ViewController
:
var session: WCSession?
override func viewDidLoad() {
super.viewDidLoad()
if WCSession.isSupported() {
session = WCSession.default()
session?.delegate = self
session?.activate()
}
}
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {
// Received Application Context from Watch
let type = applicationContext["watchType"]
print("Type iPhone: \(type)")
DispatchQueue.main.async {
self.type.text = "Type: \(type)"
}
}
ウォッチInterfaceController
:あなたはupdateApplicationContext()
を使用する場合
let session = WCSession.default()
override func awake(withContext context: Any?) {
super.awake(withContext: context)
if WCSession.isSupported() {
session.delegate = self
session.activate()
}
}
@IBAction func startPressed() {
saveEverything()
}
func saveEverything() {
let watchContextType = ["watchType" : "Boxing/Running"]
do {
print("Type Watch: \(watchContextType)")
try session.updateApplicationContext(watchContextType)
} catch {
print("Didn't work")
}
}
しかし、あなたのアプリでは、文字列の変更をiPhoneアプリに送信するだけです。状態が「実行中」のとき、スライダが1にあり、「+」を押すと、iPhoneアプリは変更を受け取りません。ランニング>スリーピング、またはその逆の場合にのみ変更を受け取ります。そして、それはOPが求めるものではありません。彼はすでにそれを実装しています:) –
はい、OPが時計からiPhoneにデータを転送するために実装されているが、同じデータが何度も繰り返しトリガされたときに、iPhone側でデータを保持することでした。 ) – Shrawan