WatchOS8でバックグラウンドリフレッシュでBLE

WatchOS8でバックグラウンドリフレッシュでBLE

WWDC2021 Connect Bluetooth devices to Apple Watch https://developer.apple.com/videos/play/wwdc2021/10005/

WatchOS8で、バックグラウンド アプリ リフレッシュで、BLEが限定的ですが、利用可能になりました。

仕組みとしては、アプリ側からペリフェラルの接続を出します。バックグラウンドでアプリがリフレッシュされている期間に、たまたまペリフェラルのアドバタイジングパケットが来れば、CoreBluetoothが、ペリフェラルと接続して、アプリとの通信を確立させます。

制限として、バックグラウンドで接続できるのは、その前にアプリがフォアグラウンドで、接続をした、あるものはペアリングもした、ペリフェラルのみです。新規のペリフェラルの発見は、バックグラウンドではできません。

アプリがリフレッシュ期間を終えて、ペリフェラルとの接続がまだ閉じていない場合は、CoreBluetoothが自動的に接続を切ります。次の、アプリリフレッシュタイミングが開始した時に、アプリはCoreBluetoothからdidDisconnectを受け取ります。アプリのリフレッシュをまたいで、切断イベントが通知されることに、注意します。

接続には、アプリがバックグラウンドにある間に、アドバタイジングパケットが来なければなりません。アプリのリフレッシュタイミングは指定ができないので、ペリフェラルは適度な頻度でアドバタイジングをし続けるしかないのですが、プレゼン中の説明では、感覚的な目安としては?2秒くらい?の間隔が1つの目安みたい?です。