【watchOS】スクリーンがオフされるとBluetooth通信ができなくなる

通常、Apple WatchアプリはスクリーンがオフされるとBluetooth通信ができなくなってしまいます。その件に関して対処方法含めて調べたことを解説します。

なお、ここでいうBluetooth通信には、Watch ConnectivityによるiOSデバイスとの通信も含まれます。本記事ではまとめてBluetooth通信と記載します。

watchOSのスクリーンがオフされた時の挙動

通常、次の手順でアプリの状態は変わります。

  1. アプリを起動
    • Not running→Inactive→Active
  2. ユーザが腕を下ろす、もしくは一定時間放置
    • Active→Inactive
    • スクリーンがオフ
  3. (デフォルトで)2分経過する
    • Inactive→Background

手順2の時点でBluetooth通信ができなくなります。

手順2の時点では、アプリの状態はInactiveになります。Inactiveはフォアグラウンド実行の状態でアプリは動作し続けていますが、Bluetoothの通信はできません。

フォアグラウンドとはいったい?と思いましたが、そういう仕様なので仕方ありません。

解決策は拡張ランタイムセッション

スクリーンがオフされてもBluetooth通信できる方法を公式ドキュメントで見つけることができました。それは拡張ランタイムセッション(Extended Runtime Sessions)です。

拡張ランタイムセッションとは、スクリーンがオフされてもBluetooth通信・データ処理・音声・触覚フィードバックを行うことができる機能です。watchOS6から追加された機能です。

使い方のイメージとしては、時間制限付きのセッションを作成し、そのセッションが生きている間は、スクリーンがオフされてもBluetooth通信を続けることができる、といった感じです。

詳しくは下記の記事にまとめていますので、ご参照ください。

【watchOS】拡張ランタイムセッションを解説【Extended Runtime Sessions】

WatchOS6.xでは、拡張ランタイムセッションを使うことで、Watch Connectivityの通信も可能でしたが、WatchOS7.0では通信できなくなりました。

(付録)シリーズ5以降ならスクリーンオフしないけど?

Apple Watch 5からスクリーンがオフされなくなりました。これならBluetooth通信できるのでは?と思いましたが、少し調べてみたところ、アプリの状態はActiveからInactiveに遷移しているようです。アプリの状態遷移は同じなので、Bluetooth通信も同じくできないだろうと思います。

手元にシリーズ5がなく動作確認していないので間違っていたらすみません。もし、5シリーズでの動作確認結果を知っている方がいらっしゃれば、情報提供いただけると幸いです。