iPhoneとApple Watch間で通信するための2つの方法【Swift】

本記事では、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について調べてみてください。簡易的なもので良ければ、下記の記事の前半部分が役に立つと思います。

BlueST Protocolの日本語訳と解説

また、Apple WatchでBluetoothを使うにはいくつか制限があります。

  • Centralとしてのみ動作可能、Peripheralとしては動作不可(Swift5時点)
  • 同時にペアリングできるのは2台まで

Centralとしてのみ動作可能というのが気持ち悪いですね。将来の機能拡張に期待したいところです。

Watch ConnectivityとCore Bluetoothのどちらを使うべき?

以上のような特徴を踏まえると、次のような使い分けになると思います。

  • Watch Connectivity
    • iPhoneとApple Watchの間でだけ通信できれば良い場合
  • Core Bluetooth
    • iPhoneとApple Watch以外のデバイスでも通信したい場合
      • 例えば、iOSとAndroidのスマートウォッチと通信

Watch Connectivityの方が簡単かつ使いやすいAPIになっているため、開発速度やメンテ効率を考えると、基本的にはこちらを使うのが良いでしょう。ただし、条件としてiPhoneとApple Watchのペアであることが必要です。

他のデバイスとも通信できるようにしたい場合には、Core Bluetoothを使いましょう。Bluetoothという通信仕様さえ合わせておけば、どんなデバイスとも通信できます。コードを書くのが少し大変ですが、今はドキュメントが豊富なので(苦労はしますが)大丈夫でしょう。

終わりに

本記事ではiPhoneとApple Watchで通信するための2つの方法と、その使い分け方を解説しました。

実際に使うための使用方法の解説記事も用意していますので、実際にアプリを作ってみたい方は是非ご参照ください。

Watch Connectivityの超シンプルなサンプルコード【Swift】

iPhoneとApple WatchでBLE通信する方法【Core Bluetooth】