tvOS supports two primary input devices: the Apple TV Remote and Made for iOS (MFi) controllers. This page provides an overview of the input devices and how to support them in your Unity application.
Note: Unity handles these input devices through the Input System package, which is enabled by default for new projects. Unity also supports the legacy Input ManagerSettings where you can define all the different input axes, buttons and controls for your project. More info
See in Glossary for existing projects. You can choose between the two input solutions through tvOS Player settings > Other Settings > Configuration > Active Input Handling.
The Apple TV Remote is a multi-purpose input device that works as a traditional menu navigation controller, app controller, and as a touch gesture device. Unity routes Apple TV Remote input to corresponding Unity APIs performing no further processing on the input. Your application might need some adjustments to its input scheme to leverage the Apple TV Remote’s specific input features. For example, your application can treat it as a traditional application controller with one analog axis and an extra action button. For specific Apple guidelines on using the Apple TV Remote, refer to Remotes.
Use the following reference table to understand and access specific TV Remote features when using the Input System package.
| Feature | Description |
|---|---|
| Touch area | To access touch information on the Apple TV Remote (first generation) use UnityEngine.InputSystem.EnhancedTouch.Touch. |
| Touch area press | A press of the touch area on the Apple TV Remote (first generation) maps to Gamepad button A. |
| Swipe to the edge of the remote | A swipe on the Apple TV Remote (first generation) generates directional pad (D-pad) up/down/left/right button presses. |
| Clickpad | The Clickpad on the Apple TV Remote (second generation) generates directional pad (D-pad) button presses. Pressing the centre of the clickpad generates a Gamepad button A press. |
| Play/Pause button | A press of the Play/Pause button generates a button X press. |
| Menu button long press | A long press calls the tvOS task switcher. You can’t override this behavior. |
| Menu button short press | You can process short taps of the menu buttons using UnityEngine.tvOS.Remote.allowExitToHome. When allowExitToHome is true, pressing the Menu button on the remote causes the application to exit and return to the system home screen. This allows users to quickly navigate away from the application. When allowExitToHome is set to false, the application handles the Menu button press. In this case, define custom behavior for the button such as opening an in-app menu or performing another action. |
| Gyroscope | Gyroscope functionality isn’t supported when developing for tvOS with Unity. |
| Accelerometer | Accelerometer functionality isn’t supported when developing for tvOS with Unity. |
You can control the Apple TV Remote operational modes via a dedicated API. For more information, refer to Remote.
Unity supports Made for iOS (MFi) controllers when developing for iOS and tvOS. MFi devices are a set of controllers and devices that are certified to work across Apple devices. MFi controllers offer out of the box input mappings, or you can set up custom mappings using the Unity Input System package. For more information, refer to Remap buttons for a MFi controller.
Note: When developing for tvOS, up to two additional wireless MFi controllers can be connected to an Apple TV device. Your application can use the controllers in the same way as iOS MFi controllers, but you must ensure its usability with the Apple TV Remote alone.
Note: Gamepad rumble on tvOS is available from Unity 6000.7 and later, for controllers that support haptics through Apple’s GameController framework. For more information, refer to Gamepad haptics in the Input System package documentation.