読者です 読者をやめる 読者になる 読者になる

Apple TVアプリの開発(Siri Remote)

tvOS 基礎技術

前回のポストでは、focus-based interfacesについて取り上げましたが、 今回は、Siri Remoteについて取り上げようと思います。
前回同様サンプルプロジェクトで簡単な例を実装していますので、 適宜参照しながら読み進めて下さい。

Siri Remoteのボタンについて

サードパーティアプリからアクセス不可能なボタン

第4世代Apple TVのSiri Remoteには、以下のようなボタンがあります。

f:id:nerd0geek1:20160123222936p:plain

出典:Remote and Interactions

このうち、Home/Siri/Volumeボタンは以下の目的のために使用され、

  • Homeボタン:ワンクリックでHome Screenに戻るため
  • Siriボタン:Siriの呼び出しに使用
  • Volumeボタン:音量の調整に使用

また、Remote and Interactionsの Buttonsの項目に

In addition to the touch surface, which also operates  
as a clickable button, the Play/Pause button on  
the Siri Remote is accessible to your app or game.  
Apps that use the Game Controller framework  
can also be notified when the Menu button is pressed,  
so they can take appropriate action.

としか記述がないことから、Home/Siri/Volumeボタンに関してはサードパーティアプリからはアクセスできないようです。

サードパーティアプリからアクセス可能なボタン(SiriRemotePressViewController)

そのため、サードパーティアプリからアクセス可能なボタンは、 Touch Surface、Menu、Play/Pauseボタンになります。 これらは、UIPress.typeによって判別できるようになっています。
なお、末尾にArrowがつくtypeはGameController用のタイプなのか、イベントを取得することができませんでした。。。

その他、Siri Remoteで取得可能な情報

ここまでは各ボタンへのアクセスについて見てきましたが、ここからはSiri Remoteで取得可能なその他の情報について見ていきます。

DPad上の位置情報(SiriRemoteDPadViewController)

Siri RemoteをGameControllerとして扱う場合、Touch SurfaceはDPadと呼ばれ、 DPad上の指の移動は、x座標をxValue、y座標をyValueとして値を取得することができます。
(どちらも、Min: -1.0、Max: 1.0)

加速度、重力加速度(SiriRemoteMotionViewController)

その他にもSiri RemoteをGameControllerとして扱うと、加速度や重力加速度を取得することができます。

まとめ

今回はSiri Remoteから取得可能なイベントについて詳しく説明しました。
tvOSはfocus-based interfacesなので、今回説明したような内容を使うことはあまり多くないかもしれませんが、 できないことだけでも知っておくだけでも随分違うかと思います。

参考