Partager via


Contrôleurs Siri Remote et Bluetooth pour tvOS dans Xamarin

Les utilisateurs de votre application Xamarin.tvOS n’interagissent pas directement avec son interface comme avec iOS où ils appuient sur des images sur l’écran de l’appareil, mais indirectement depuis l’ensemble de la salle à l’aide de Siri Remote.

Si votre application est un jeu, vous pouvez éventuellement créer une prise en charge pour les contrôleurs de jeu Bluetooth Made For iOS (MFI) dans votre application.

Le contrôleur bluetooth distant et le contrôleur de jeu

Cet article décrit les mouvements Siri Remote, Touch Surface et Siri Remote Buttons et montre comment les utiliser via des mouvements et des storyboards, des mouvements et du code et la gestion des événements de bas niveau. Enfin, il traite de l’utilisation des contrôleurs de jeu dans une application Xamarin.tvOS.

Le Siri Remote

La façon principale pour les utilisateurs d’interagir avec Apple TV et votre application Xamarin.tvOS est via l’application Siri Remote incluse. Apple a conçu l’appareil distant pour relier la distance entre l’utilisateur assis sur le canapé et l’interface utilisateur d’Apple TV affichée sur la salle sur l’écran de télévision.

Votre défi en tant que développeur d’applications tvOS est la création d’une interface utilisateur rapide, facile à utiliser et visuellement attrayante qui tire parti de la surface tactile de Siri Remote, de l’accéléromètre, du gyroscope et des boutons.

Le Siri Remote

Siri Remote dispose des fonctionnalités suivantes et des utilisations attendues dans votre application tvOS :

Fonctionnalité Utilisation générale de l’application Utilisation de l’application de jeu
Surface tactile
Balayez pour naviguer, appuyez pour sélectionner et maintenez la touche enfoncée pour les menus contextuels.
Appuyez/balayez
Navigation de l’interface utilisateur entre les éléments pouvant être concentrés.

Cliquez sur
Active l’élément sélectionné (en focus).
Appuyez/balayez
Dépend de la conception du jeu et peut être utilisé en tant que D-Pad en appuyant sur les bords.

Cliquez sur
Effectuez la fonction de bouton principal.
Menu
Appuyez pour revenir à l’écran ou au menu précédent.
Retourne à l’écran précédent et quitte l’écran d’accueil Apple TV à partir de l’écran principal de l’application. Suspendre et reprendre le gameplay, retourne à l’écran précédent et quitte l’écran d’accueil Apple TV à partir de l’écran principal de l’application.
Siri/Recherche
Dans les pays avec Siri, appuyez longuement pour contrôler la voix, dans tous les autres pays, affiche l’écran de recherche.
n/a n/a
Lecture/pause
Lire et suspendre le média ou fournit une fonction secondaire dans les applications.
Démarre la lecture multimédia et suspend/reprend la lecture. Effectue une fonction de bouton secondaire ou ignore la vidéo d’introduction (le cas échéant).
Accueil
Appuyez pour revenir à l’écran d’accueil, double-cliquez pour afficher les applications en cours d’exécution, appuyez longuement sur l’appareil en veille.
n/a n/a
Volume
Contrôle le volume d’équipement audio/vidéo attaché.
n/a n/a

Mouvements tactiles de surface

La Surface tactile de Siri Remote est en mesure de détecter une variété de mouvements à doigt unique auxquels vous pouvez répondre dans votre application Xamarin.tvOS :

Balayer Cliquez Taper
Déplace la sélection Actif de l’élément sélectionné Boutons directionnels
Déplace la sélection (focus) entre les éléments de l’interface utilisateur à l’écran (haut, bas à gauche, droite). Le balayage peut être utilisé pour parcourir de grandes listes de contenu rapidement à l’aide de l’inertie. Active l’élément sélectionné (en focus) ou agit comme le bouton principal d’un jeu. Un clic et une conservation peuvent activer des menus contextuels ou des fonctions secondaires. Le fait d’appuyer légèrement sur l’aire tactile sur les bords agit comme des boutons directionnels sur un pavé D, en déplaçant le focus vers le haut, vers le bas, vers la gauche ou la droite en fonction de la zone enfoncée. Selon l’application, vous pouvez l’utiliser pour révéler des contrôles masqués.

Apple fournit les suggestions suivantes pour l’utilisation des mouvements Touch Surface :

  • Différencier les clics et les appuis : le clic est une action intentionnelle de l’utilisateur et convient parfaitement à la sélection, à l’activation et au bouton principal d’un jeu. Le tapage est plus subtil et doit être utilisé avec modération, car l’utilisateur tient souvent Siri Remote dans sa main et peut activer accidentellement un événement Tap facilement.
  • Ne redéfinissez pas les mouvements standard : l’utilisateur s’attend à ce que des mouvements spécifiques effectuent des actions spécifiques, vous ne devez pas redéfinir la signification ou la fonction de ces mouvements dans votre application. L’une des exceptions est une application de jeu pendant le gameplay actif.
  • Définissez les nouveaux gestes avec parcimonie : là encore, l’utilisateur s’attend à ce que des mouvements spécifiques effectuent des actions spécifiques. Vous devez éviter de définir des mouvements personnalisés pour effectuer des actions standard. Et encore une fois, les jeux sont l’exception la plus habituelle où les mouvements personnalisés peuvent ajouter un jeu amusant et immersif au jeu.
  • Si c’est le cas, répondre aux appuis du pavé D - Appuyez légèrement sur les bords de l’aire tactile réagit comme un D-Pad sur un contrôleur de jeu déplaçant le focus ou la direction vers le haut, vers le bas, la gauche ou la droite. Si nécessaire, vous devez répondre à ces mouvements dans votre application ou votre jeu.

Boutons distants Siri

En plus des mouvements sur l’Aire tactile, votre application peut répondre à l’utilisateur en cliquant sur l’Aire tactile ou en appuyant sur le bouton Lecture/Pause. Si vous accédez à Siri Remote à l’aide de Game Controller Framework, vous pouvez également détecter le bouton Menu enfoncé.

En outre, les appuis sur les boutons de menu peuvent être détectés à l’aide d’un module De reconnaissance de mouvement avec des éléments standard UIKit . Si vous interceptez le bouton Menu enfoncé, vous êtes responsable de la fermeture de l’affichage actuel et du contrôleur de vue, puis de revenir à la précédente.

Important

Vous devez toujours affecter une fonction au bouton Lecture/Pause sur la distance. Le fait d’avoir un bouton non fonctionnel peut rendre votre application rompue à l’utilisateur final. Si vous n’avez pas de fonction valide pour ce bouton, affectez la même fonction que le bouton principal (Touch Surface Click).

Mouvements et tableaux de montage séquentiel

Le moyen le plus simple d’utiliser Siri Remote dans votre application Xamarin.tvOS consiste à ajouter Des reconnaissances de mouvement à vos vues dans le Concepteur d’interface.

Pour ajouter un mouvement Recognizer, procédez comme suit :

  1. Dans le Explorateur de solutions, double-cliquez sur le Main.storyboard fichier et ouvrez-le pour modifier le Concepteur d’interface.

  2. Faites glisser un générateur de reconnaissance de mouvement d’appui à partir de la bibliothèque et déposez-le dans l’affichage :

    Reconnaissance de mouvement d’appui

  3. Cochez la case dans la section Bouton de l’inspecteur d’attribut :

    Cochez la case

  4. Sélectionner signifie que le mouvement répond à l’utilisateur en cliquant sur l’aire tactile sur Siri Remote. Vous avez également la possibilité de répondre aux boutons Menu, Lecture/Pause, Haut, Bas, Gauche et Droite.

  5. Ensuite, connectez une action à partir du module Tap Gesture Recognizer et appelez-la TouchSurfaceClicked:

    Action à partir du module De reconnaissance de mouvement d’appui

  6. Enregistrez vos modifications et revenez à Visual Studio pour Mac.

Modifiez votre fichier View Controller (exemple FirstViewController.cs) et ajoutez le code suivant pour gérer le mouvement déclenché :

using System;
using UIKit;

namespace tvRemote
{
    public partial class FirstViewController : UIViewController
    {
        ...

        #region Custom Actions
        partial void TouchSurfaceClicked (Foundation.NSObject sender) {
            // Handle click here
            ...
        }
        #endregion
    }
}

Pour plus d’informations sur l’utilisation de Storyboards, consultez notre Guide de démarrage rapide Hello, tvOS. Plus précisément, la création de l’interface utilisateur et l’écriture du code avec des points de sortie et des sections actions.

Mouvements et code

Si vous le souhaitez, vous pouvez créer des mouvements directement dans le code C# et les ajouter à des vues dans votre interface utilisateur. Par exemple, pour ajouter une série de reconnaissances de mouvement de balayage, modifiez votre contrôleur d’affichage et ajoutez le code suivant :

using System;
using UIKit;

namespace tvRemote
{
    public partial class SecondViewController : UIViewController
    {
        #region Constructors
        public SecondViewController (IntPtr handle) : base (handle)
        {
        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Wire-up gestures
            var upGesture = new UISwipeGestureRecognizer (() => {
                RemoteView.ArrowPressed = "Up";
                ButtonLabel.Text = "Swiped Up";
            }) {
                Direction = UISwipeGestureRecognizerDirection.Up
            };
            this.View.AddGestureRecognizer (upGesture);

            var downGesture = new UISwipeGestureRecognizer (() => {
                RemoteView.ArrowPressed = "Down";
                ButtonLabel.Text = "Swiped Down";
            }) {
                Direction = UISwipeGestureRecognizerDirection.Down
            };
            this.View.AddGestureRecognizer (downGesture);

            var leftGesture = new UISwipeGestureRecognizer (() => {
                RemoteView.ArrowPressed = "Left";
                ButtonLabel.Text = "Swiped Left";
            }) {
                Direction = UISwipeGestureRecognizerDirection.Left
            };
            this.View.AddGestureRecognizer (leftGesture);

            var rightGesture = new UISwipeGestureRecognizer (() => {
                RemoteView.ArrowPressed = "Right";
                ButtonLabel.Text = "Swiped Right";
            }) {
                Direction = UISwipeGestureRecognizerDirection.Right
            };
            this.View.AddGestureRecognizer (rightGesture);
        }
        #endregion
    }
}

Gestion des événements de bas niveau

Si vous créez un type personnalisé basé sur UIKit votre application Xamarin.tvOS (par exemple UIView), vous avez également la possibilité de fournir une gestion de bas niveau de la pression sur les boutons via UIPress des événements.

Un UIPress événement est destiné à tvOS qu’est-ce qu’un UITouch événement est à iOS, à l’exception de UIPress renvoyer des informations sur les appuis sur les boutons sur les appareils Siri Remote ou d’autres appareils Bluetooth attachés (comme un contrôleur de jeu). UIPress les événements décrivent le bouton enfoncé et son état (Commencé, Annulé, Modifié ou Terminé).

Pour les boutons analogiques sur des appareils tels que les contrôleurs de jeu Bluetooth, UIPress retourne également la force appliquée au bouton. La Type propriété de l’événement UIPress définit l’état du bouton physique qui a changé, tandis que le reste des propriétés décrivent la modification qui s’est produite.

Le code suivant montre un exemple de gestion des événements de bas niveau UIPress pour un UIView:

using System;
using Foundation;
using UIKit;

namespace tvRemote
{
    public partial class EventView : UIView
    {
        #region Computed Properties
        public override bool CanBecomeFocused {
            get {
                return true;
            }
        }
        #endregion

        #region
        public EventView (IntPtr handle) : base (handle)
        {
        }
        #endregion

        #region Override Methods
        public override void PressesBegan (NSSet<UIPress> presses, UIPressesEvent evt)
        {
            base.PressesBegan (presses, evt);

            foreach (UIPress press in presses) {
                // Was the Touch Surface clicked?
                if (press.Type == UIPressType.Select) {
                    BackgroundColor = UIColor.Red;
                }
            }
        }

        public override void PressesCancelled (NSSet<UIPress> presses, UIPressesEvent evt)
        {
            base.PressesCancelled (presses, evt);

            foreach (UIPress press in presses) {
                // Was the Touch Surface clicked?
                if (press.Type == UIPressType.Select) {
                    BackgroundColor = UIColor.Clear;
                }
            }
        }

        public override void PressesChanged (NSSet<UIPress> presses, UIPressesEvent evt)
        {
            base.PressesChanged (presses, evt);
        }

        public override void PressesEnded (NSSet<UIPress> presses, UIPressesEvent evt)
        {
            base.PressesEnded (presses, evt);

            foreach (UIPress press in presses) {
                // Was the Touch Surface clicked?
                if (press.Type == UIPressType.Select) {
                    BackgroundColor = UIColor.Clear;
                }
            }
        }
        #endregion
    }
}

Comme pour UITouch les événements, si vous devez implémenter l’un UIPress des remplacements d’événements, vous devez implémenter les quatre.

Contrôleurs de jeu Bluetooth

En plus de la norme Siri Remote fournie avec Apple TV, 3e partie, Made For iOS (MFI) Les contrôleurs de jeu Bluetooth peuvent être jumelés avec Apple TV et utilisés pour contrôler votre application Xamarin.tvOS.

Contrôleurs de jeu Bluetooth

Les contrôleurs de jeu peuvent être utilisés pour améliorer le jeu et fournir un sentiment d’immersion dans un jeu. Ils peuvent également être utilisés pour contrôler l’interface Apple TV standard afin que l’utilisation n’ait pas à basculer entre la télécommande et le contrôleur.

Important

Les contrôleurs de jeu Bluetooth sont un achat facultatif que les utilisateurs finaux peuvent effectuer, votre application ne peut pas forcer l’utilisateur à en acheter un. Si votre application prend en charge les contrôleurs de jeu, elle doit également prendre en charge Siri Remote afin que le jeu soit utilisable par tous les utilisateurs Apple TV.

Un contrôleur de jeu dispose des fonctionnalités suivantes et des utilisations attendues dans votre application tvOS :

Fonctionnalité Utilisation générale de l’application Utilisation de l’application de jeu
D-Pad Navigue dans les éléments de l’interface utilisateur (focus des modifications). Dépend du jeu.
A Active l’élément sélectionné (en focus). Exécute la fonction de bouton principal et confirme les actions de boîte de dialogue.
B Retourne à l’écran précédent ou quitte l’écran d’accueil si sur l’écran principal de l’application. Exécute la fonction de bouton secondaire ou retourne à l’écran précédent.
X Démarre la lecture multimédia ou interrompt/reprend la lecture. Dépend du jeu.
O n/a Dépend du jeu.
Menu Retourne à l’écran précédent ou quitte l’écran d’accueil si sur l’écran principal de l’application. Pause/reprise du jeu, retourne à l’écran précédent ou quitte l’écran d’accueil si sur l’écran principal de l’application.
Bouton d’épaule gauche Navigue vers la gauche. Dépend du jeu.
Déclencheur gauche Navigue vers la gauche. Dépend du jeu.
Bouton d’épaule droite Navigue vers la droite. Dépend du jeu.
Déclencheur droit Navigue vers la droite Dépend du jeu.
Stick gauche Navigue dans les éléments de l’interface utilisateur (focus des modifications). Dépend du jeu.
Stick droit n/a Dépend du jeu.

Apple fournit les suggestions suivantes pour l’utilisation des contrôleurs de jeu :

  • Confirmez les Connecter ions du contrôleur de jeu : votre application tvOS peut être démarrée et arrêtée à tout moment par l’utilisateur final. Vous devez toujours case activée pour la présence d’un contrôleur de jeu au démarrage ou au réveil de l’application et prendre des mesures en fonction des besoins.
  • Assurez-vous que votre application fonctionne à la fois sur les contrôleurs de jeu et distants Siri . Vous n’avez pas besoin que les utilisateurs basculent entre Siri Remote et un contrôleur de jeu pour utiliser votre application. Testez souvent votre application avec les deux types de contrôleurs, ce qui garantit que tout est facile à naviguer et fonctionne comme prévu.
  • Indiquez un retour vers l’arrière - Appuyer sur le bouton Menu doit toujours revenir à l’écran précédent. Si l’utilisateur se trouve à l’écran principal de l’application, le bouton Menu doit les renvoyer à l’écran d’accueil Apple TV. Pendant le jeu, le bouton Menu doit afficher une alerte donnant à l’utilisateur la possibilité de suspendre/reprendre le jeu ou de revenir au menu principal.

Utilisation des contrôleurs de jeu

Comme indiqué ci-dessus, en plus de la norme Siri Remote fournie avec Apple TV, l’utilisateur peut éventuellement attacher une tierce partie, Made For iOS (MFI) Contrôleurs de jeu Bluetooth et l’utiliser pour contrôler votre application Xamarin.tvOS.

Si votre application a besoin d’une entrée de contrôleur de bas niveau, vous pouvez utiliser l’infrastructure Game Controller Framework d’Apple qui a les modifications suivantes pour tvOS :

  • Le profil Micro Game Controller (GCMicroGamepad) a été ajouté pour cibler Siri Remote.
  • La nouvelle GCEventViewController classe peut être utilisée pour acheminer des événements de contrôleur de jeu via votre application. Pour plus d’informations, consultez la section Détermination de l’entrée du contrôleur de jeu ci-dessous.

Configuration requise pour la prise en charge du contrôleur de jeu

Apple a plusieurs exigences spécifiques qui doivent être remplies si votre application Xamarin.tvOS prend en charge les contrôleurs de jeu :

  • Vous devez prendre en charge Siri Remote : vous devez toujours prendre en charge Siri Remote. Votre jeu ne peut pas exiger qu’un contrôleur de jeu tiers soit jouable.
  • Vous devez prendre en charge la disposition de contrôle étendu : tous les contrôleurs de jeu tvOS ne sont pas des contrôleurs étendus sans forme.
  • Les jeux doivent être jouables avec des contrôleurs autonomes : si votre application prend en charge un contrôleur de jeu étendu, elle doit être jouable uniquement avec ce contrôleur de jeu.
  • Vous devez prendre en charge le bouton Lecture/Pause - Pendant le jeu, si l’utilisateur appuie sur le bouton Lecture/Pause, vous devez afficher une alerte permettant à l’utilisateur de suspendre/reprendre le jeu ou de revenir au menu principal.

Activation de la prise en charge du contrôleur de jeu

Pour activer la prise en charge de Game Controller dans votre application Xamarin.tvOS, double-cliquez sur le Info.plist fichier dans le Explorateur de solutions pour l’ouvrir pour modification :

Éditeur Info.plist

Sous la section Contrôleur de jeu, placez une case activée en activant les contrôleurs de jeu, puis case activée tous les types de contrôleurs de jeu qui seront pris en charge par l’application.

Utilisation de Siri Remote en tant que contrôleur de jeu

Le Siri Remote qui est disponible avec Apple TV peut être utilisé comme contrôleur de jeu limité. Comme d’autres contrôleurs de jeu, il apparaît dans game controller Framework en tant qu’objet GCController et prend en charge les profils et les GCMotionGCMicroGamepad profils.

Siri Remote présente les caractéristiques suivantes lors de l’utilisation en tant que contrôleur de jeu :

  • L’aire tactile peut être utilisée comme pavé D qui fournit des données d’entrée analogiques.
  • L’objet distant peut être utilisé dans une orientation portrait ou paysage et votre application décide si l’objet profil doit retourner automatiquement les données d’entrée.
  • Cliquer sur l’aire tactile agit comme appuyer sur le bouton A sur un contrôleur de jeu.
  • Le bouton Lecture/Pause agit comme le bouton X sur un contrôleur de jeu.
  • Le bouton Menu doit afficher une alerte donnant à l’utilisateur la possibilité de suspendre/reprendre le jeu ou de revenir au menu principal.

Détermination de l’entrée du contrôleur de jeu

Contrairement à iOS où les événements Game Controller peuvent être reçus en parallèle avec les événements Touch, tvOS traite tous les événements de bas niveau pour fournir des événements de haut niveau UIKit . Par conséquent, si vous avez besoin d’accéder aux événements Game Controller de bas niveau, vous devez désactiver UIKitle comportement par défaut.

Sur tvOS, lorsque vous souhaitez traiter directement l’entrée du contrôleur de jeu, vous devez utiliser une GCEventViewController (ou une sous-classe) pour afficher l’interface utilisateur du jeu. Chaque fois qu’un GCEventViewControllerpremier répondeur, l’entrée du contrôleur de jeu est capturée et remise à votre application via Game Controller Framework.

Vous pouvez utiliser la UserInteractionEnabled propriété de la GCEventViewController classe pour basculer la façon dont les événements sont traités et gérés.

Pour plus d’informations sur l’implémentation de la prise en charge du contrôleur de jeu, consultez la section Utilisation des contrôleurs de jeu d’Apple dans le Guide de programmation des applications pour tvOS et Game Controller Programming Guide.

Résumé

Cet article a abordé le nouveau Siri Remote fourni avec les touches Apple TV, Touch Surface et Siri Remote buttons. Ensuite, il a abordé l’utilisation des mouvements et des storyboards, des mouvements et du code et des événements de bas niveau. Enfin, si vous avez discuté de l’utilisation des contrôleurs de jeu.