More Related Content
Similar to Apple Watch 間通信 (10)
More from Shuichi Tsutsumi (20)
Apple Watch 間通信
- 2. • 堤 修一(つつみ しゅういち)
• iOS専業フリーランス
• ブログ『Over&Out その後』
• 著書
『iOS×BLE Core Bluetoothプログラミング』
『iOSアプリ開発 達人のレシピ100』
自己紹介
- 33. Point 1:
Core Bluetooth を用いた通信
• BLE(Bluetooth Low Energy) を利用
- WiFi等のインフラなしで通信可能
• ステータス確認・スキャン・アドバタイズ・
接続確立・データのやり取り等、ほぼすべて
の機能がバックグラウンドで利用可能
- 34. Point 1:
Core Bluetooth を用いた通信
• BLE(Bluetooth Low Energy) を利用
- WiFi等のインフラなしで通信可能
• ステータス確認・スキャン・アドバタイズ・
接続確立・データのやり取り等、ほぼすべて
の機能がバックグラウンドで利用可能
- UX的にはparent appでの処理と悟られない
- 35. Point 1:
Core Bluetooth を用いた通信
• BLE(Bluetooth Low Energy) を利用
- WiFi等のインフラなしで通信可能
• ステータス確認・スキャン・アドバタイズ・
接続確立・データのやり取り等、ほぼすべて
の機能がバックグラウンドで利用可能
- UX的にはparent appでの処理と悟られない
- 1度接続すれば、あとは接続が切れても
バックグラウンドで勝手に再接続される
- 36. Point 1:
Core Bluetooth を用いた通信
• BLE(Bluetooth Low Energy) を利用
- WiFi等のインフラなしで通信可能
• ステータス確認・スキャン・アドバタイズ・
接続確立・データのやり取り等、ほぼすべて
の機能がバックグラウンドで利用可能
- UX的にはparent appでの処理と悟られない
- 1度接続すれば、あとは接続が切れても
バックグラウンドで勝手に再接続される
- プロセスが死んでてもゾンビのように復活
して繋がってくれる
- 37. Point 1:
Core Bluetooth を用いた通信
• BLE(Bluetooth Low Energy) を利用
- WiFi等のインフラなしで通信可能
• ステータス確認・スキャン・アドバタイズ・
接続確立・データのやり取り等、ほぼすべて
の機能がバックグラウンドで利用可能
- UX的にはparent appでの処理と悟られない
- 1度接続すれば、あとは接続が切れても
バックグラウンドで勝手に再接続される
- プロセスが死んでてもゾンビのように復活
して繋がってくれる
• 詳細はこちら: 『殺しても死なないアプリ』(potatotips #17 での発表)
- 42. Point 2:
openParent∼による非同期処理実行
• Core Bluetooth は非同期でレス
ポンスが返ってくる処理ばかり
• openParent∼は親アプリからの
レスポンスを受け取れるが、同
期処理なので非同期処理の結果
は受け取れない
→ WatchKit Extension側から結果を受け取れるまでポーリングする
- 詳細:『WatchKit もろもろ実機検証』(実装コードあり)
- 60. ウォッチで計測した心拍数をリアルタイムに
iPhone 側で HealthKit から取得できるのか?
• 心拍数の単位は“BPM”(Beats
Per Minute) なので60秒ぐらい
までのタイムラグは許容範囲
かと
• Watch で心拍数を計測しつ
つ、iPhone の Health アプリで
最新データがいつ取得できる
か確認してみた
[Health Data] > [Vitals]
> [Heart Rate] > [Show All Data]
- 61. ウォッチで計測した心拍数をリアルタイムに
iPhone 側で HealthKit から取得できるのか?
• 心拍数の単位は“BPM”(Beats
Per Minute) なので60秒ぐらい
までのタイムラグは許容範囲
かと
• Watch で心拍数を計測しつ
つ、iPhone の Health アプリで
最新データがいつ取得できる
か確認してみた
→ ほぼタイムラグなし
(多く見ても10秒以内) [Health Data] > [Vitals]
> [Heart Rate] > [Show All Data]
- 79. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
- 80. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
- 81. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
- 82. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
• 通信速度も悪くない
- 83. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
• 通信速度も悪くない
• 苦しい点
- 84. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
• 通信速度も悪くない
• 苦しい点
• ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない)
- 85. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
• 通信速度も悪くない
• 苦しい点
• ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない)
• タップは受信側が無理(Taptic Engine を制御できない)
- 86. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
• 通信速度も悪くない
• 苦しい点
• ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない)
• タップは受信側が無理(Taptic Engine を制御できない)
• 手描きスケッチも受信側が無理(あんなに滑らかに線を「動的に」描画できない)
- 87. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
→ 意外とアリなのでは?
• 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては
ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
• WiFiなどのインフラ不要、オフラインでも通信可能
• メッセージ、心拍、絵文字は送れる
• 通信速度も悪くない
• 苦しい点
• ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない)
• タップは受信側が無理(Taptic Engine を制御できない)
• 手描きスケッチも受信側が無理(あんなに滑らかに線を「動的に」描画できない)
• 使いどころ(何に役立つのか?どんなアプリで嬉しいのか?)