本記事では、iPhoneとApple Watch間で通信するための2つの方法を解説します。どちらの方法もメリットがあり、アプリケーションの要件に応じて使い分けるのが良いでしょう。本記事を読んで、使い分けができるようになってください。
目次
iPhoneとApple Watchで通信する方法とは
さっそくですが、その2つの方法をご紹介します。
- Watch Connectivity
- Core Bluetooth
どちらもAppleの公式フレームワークです。昔はApp Groupsを使っていましたが、今は非推奨のようです。
順にそれぞれの説明をしていきます。
Watch Connectivityとは
ペアリングしているiPhoneとApple Watch間で通信することができるフレームワークです。
セッションを開始するだけでメッセージのやりとりが開始できるようになり、Bluetoothのようにアドバタイズやディスカバーといった手順を踏む必要がなく、少ないコードで書けて便利です。
通信方法はいくつか用意されており、下記のような方法があります。
- Managing Background Updates
- 辞書データを送受信
- バックグラウンドで通信
- 送信前に新しいデータを送信しようとすると、古いデータは上書きされる
- アプリケーションの状態を共有する場合に適しています
- Sending Messages
- 辞書データを送受信
- 即時、送受信
- お互いにアクティブである必要がある(iOS側はアプリ閉じててもアクティブ)
- リアルタイムにデータをやりとりする場合に適しています
- Updating Complication Data
- コンプリケーションに関連した辞書データを送受信
- iOSからWatchOSに対してコンプリケーションの更新を行うために使います
- Transferring Data in the Background
- 辞書データを送受信
- バックグラウンドで通信
- Managging Background Updatesと違い、古いデータは上書きされない
- 急いでないけど、全てデータを送る場合に適しています
- Transferring Files in the Background
- ファイルを送受信
- バックグラウンドで通信
- ファイルを送受信したい時に使います
Core Bluetoothとは
その名前の通り、Bluetoothを使うためのフレームワークです。
Bluetoothの仕様にのっとって通信を行うためのAPIが揃っています。そのため、ある程度のBluetoothの知識が必要になってきます。Watch Connectivityと比べるとレイヤーの低いAPIという印象を受けます。
Core Bluetoothでの通信方法はBluetoothそのままなので、詳しくはBluetoothについて調べてみてください。簡易的なもので良ければ、下記の記事の前半部分が役に立つと思います。
また、Apple WatchでBluetoothを使うにはいくつか制限があります。
- Centralとしてのみ動作可能、Peripheralとしては動作不可(Swift5時点)
- 同時にペアリングできるのは2台まで
Centralとしてのみ動作可能というのが気持ち悪いですね。将来の機能拡張に期待したいところです。
Watch ConnectivityとCore Bluetoothのどちらを使うべき?
以上のような特徴を踏まえると、次のような使い分けになると思います。
- Watch Connectivity
- iPhoneとApple Watchの間でだけ通信できれば良い場合
- Core Bluetooth
- iPhoneとApple Watch以外のデバイスでも通信したい場合
- 例えば、iOSとAndroidのスマートウォッチと通信
- iPhoneとApple Watch以外のデバイスでも通信したい場合
Watch Connectivityの方が簡単かつ使いやすいAPIになっているため、開発速度やメンテ効率を考えると、基本的にはこちらを使うのが良いでしょう。ただし、条件としてiPhoneとApple Watchのペアであることが必要です。
他のデバイスとも通信できるようにしたい場合には、Core Bluetoothを使いましょう。Bluetoothという通信仕様さえ合わせておけば、どんなデバイスとも通信できます。コードを書くのが少し大変ですが、今はドキュメントが豊富なので(苦労はしますが)大丈夫でしょう。
終わりに
本記事ではiPhoneとApple Watchで通信するための2つの方法と、その使い分け方を解説しました。
実際に使うための使用方法の解説記事も用意していますので、実際にアプリを作ってみたい方は是非ご参照ください。