Nearby Interactionを久々に触ったメモ
UWBについてはNearby Interaction登場前から注目していて、WWDC20でNearby Interactionフレームワークが登場してすぐに記事を書いたりもしたが、まだ実戦投入したことはなかった。
最近ひさびさに触る機会があったので、実機で動かしてみての気付きや、改めて調べたことについて雑多にメモを書いておく。
これまでに書いたNearby Interactionの記事
Nearby Interactionの情報は公式ドキュメントと過去のWWDCセッション3つぐらいしかない。
ので、それら(WWDCセッションから得た知見)をまとめた記事である過去記事が普通に今でも役に立ったので、いったんここに載せておく。
最小実装が書いてある
UWBの指向性の話や、それによって「方向」(direction)が取れなくなることも書いてある
WWDC21の唯一のNearby Interaction関連セッションであるExplore〜から得た知見のメモ
2021年/iOS 15における機能追加はこれだけ(のはず)
WWDC21〜WWDC22あたりの情報をまとめた記事
WWDC22の"What's new in Nearby Interaction"のバックグラウンドセッションについての解説を掘り下げた記事
複数台との同時セッションの実装方法
セッション中、近接オブジェクトに更新があると `NISessionDelegate` の `session(_:didUpdate:)` メソッドが呼ばれる。
func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject])
この引数には NINearbyObject が配列で渡されるようになっており、明らかに複数台との同時セッションが想定されてそうではある。
しかし一方で、`NISession` の` run` メソッドは複数の `NIConfiguration` を引数に取れないし、`NIConfiguration` は複数の `NIDiscoveryToken` を持てない。複数回 `run` を呼べるかどうかはドキュメントには明記されていないが、 `pause` や `invalidate` メソッドはどのデバイスとのインタラクションを止めるかといった指定ができない。
これらを鑑みると、やはり `NISession` ひとつにつきひとつのデバイスとのインタラクションを想定しているように見える。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/