Share via


Siri Remote- und Bluetooth-Controller für tvOS in Xamarin

Benutzer Ihrer Xamarin.tvOS-App interagieren nicht direkt mit ihrer Benutzeroberfläche wie bei iOS, wo sie auf dem Bildschirm des Geräts auf Bilder tippen, aber indirekt über den Raum mithilfe der Siri Remote.

Wenn Es sich bei Ihrer App um ein Spiel handelt, können Sie optional unterstützung für Drittanbieter, Made For iOS (MFI) Bluetooth Game Controller in Ihrer App erstellen.

Bluetooth-Remote- und Gamecontroller

In diesem Artikel werden die Siri-Remote-, Touch-Surface-Gesten und Siri-Remoteschaltflächen beschrieben und gezeigt, wie Sie mit ihnen über Gesten und Storyboards, Gesten und Code und Die Behandlung von Ereignissen auf niedriger Ebene arbeiten. Schließlich wird die Arbeit mit Gamecontrollern in einer Xamarin.tvOS-App erläutert.

Die Siri-Fernbedienung

Die Standard Art und Weise, wie Benutzer mit apple TV interagieren, und Ihre Xamarin.tvOS-App ist über die enthaltene Siri Remote. Apple hat die Fernbedienung entwickelt, um den Abstand zwischen dem Benutzer, der auf der Couch sitzt, und der Benutzeroberfläche von Apple TV, die über den Raum auf dem FERNSEHbildschirm angezeigt wird, zu überbrücken.

Ihre Herausforderung als tvOS-App-Entwickler ist das Erstellen einer schnellen, einfach zu verwendenden und visuell ansprechenden Benutzeroberfläche, die die Touchoberfläche von Siri Remote, Beschleunigungsmesser, Gyroskop und Schaltflächen nutzt.

Die Siri-Fernbedienung

Die Siri Remote verfügt über die folgenden Features und erwarteten Nutzungen in Ihrer tvOS-App:

Funktion Allgemeine App-Nutzung Verwendung von Spiele-Apps
Touch Surface
Wischen Sie, um zu navigieren, drücken Sie, um Kontextmenüs auszuwählen und zu halten.
Tippen/Wischen
Benutzeroberflächennavigation zwischen fokussierbaren Elementen.

Klicken
Aktiviert das ausgewählte Element (im Fokus).
Tippen/Wischen
Hängt vom Spieldesign ab und kann als D-Pad verwendet werden, indem er auf die Kanten tippt.

Klicken
Führen Sie die primäre Schaltflächenfunktion aus.
Menü
Drücken Sie, um zum vorherigen Bildschirm oder Menü zurückzukehren.
Kehrt zum vorherigen Bildschirm zurück und beendet den Apple TV-Startbildschirm vom Standard App-Bildschirm. Pause and resume gameplay, returns to previous screen and exits to Apple TV Home screen from the Standard app screen.
Siri/Suche
In Ländern mit Siri wird der Suchbildschirm in allen anderen Ländern durch Drücken und Halten für die Sprachsteuerung angezeigt.
Nicht zutreffend Nicht zutreffend
Wiedergabe/Pause
Wiedergeben und Anhalten von Medien oder Stellt eine sekundäre Funktion in Apps bereit.
Startet die Medienwiedergabe und die Wiedergabe anhalten/fortsetzen. Führt sekundäre Schaltflächenfunktion aus oder überspringt ein Einführungsvideo (sofern vorhanden).
Home
Drücken Sie, um zum Startbildschirm zurückzukehren, doppelklicken Sie, um ausgeführte Apps anzuzeigen, halten Sie es gedrückt, um das Standbygerät anzuzeigen.
Nicht zutreffend Nicht zutreffend
Volumen
Steuert die angeschlossene Audio-/Videogerätelautstärke.
Nicht zutreffend Nicht zutreffend

Touch-Surface-Gesten

Das Siri Remote Touch Surface kann eine Vielzahl von Einzelfingergesten erkennen, auf die Sie in Ihrer Xamarin.tvOS-App reagieren können:

Wischen Klicken Tippen
Verschiebt die Auswahl Aktiviert das ausgewählte Element. Richtungsschaltflächen
Verschiebt die Auswahl (Fokus) zwischen UI-Elementen auf dem Bildschirm (nach oben, unten links, rechts). Das Wischen kann verwendet werden, um schnell durch große Inhaltslisten zu scrollen. Aktiviert das ausgewählte Element (im Fokus) oder verhält sich wie die primäre Schaltfläche in einem Spiel. Durch Klicken und Halten können Kontextmenüs oder sekundäre Funktionen aktiviert werden. Das Tippen auf das Touch-Surface auf den Rändern wirkt wie direktionale Tasten auf einem D-Pad, wobei der Fokus je nach angetipptem Bereich nach oben, unten, links oder rechts bewegt wird. Je nach App können ausgeblendete Steuerelemente angezeigt werden.

Apple bietet die folgenden Vorschläge für die Arbeit mit Touch Surface-Gesten:

  • Unterscheiden Sie zwischen Klicks und Tippen – Das Klicken ist eine beabsichtigte Aktion des Benutzers und eignet sich gut für die Auswahl, Aktivierung und die primäre Schaltfläche eines Spiels. Das Tippen ist dezenter und sollte sparsam verwendet werden, da der Benutzer häufig die Siri Remote in seiner Hand hält und versehentlich ein Tap-Ereignis aktivieren kann.
  • Definieren Sie keine Standardgesten neu. Der Benutzer erwartet, dass bestimmte Gesten bestimmte Aktionen ausführen, Sie sollten die Bedeutung oder Funktion dieser Gesten in Ihrer App nicht neu definieren. Die einzige Ausnahme ist eine Spiele-App während des aktiven Spiels.
  • Neue Gesten sparsam definieren – Auch hier erwartet der Benutzer, dass bestimmte Gesten bestimmte Aktionen ausführen. Sie sollten keine benutzerdefinierten Gesten definieren, um Standardaktionen auszuführen. Und wieder sind Spiele die häufigste Ausnahme, bei denen benutzerdefinierte Gesten dem Spiel spaßigen, immersiven Spielverlauf hinzufügen können.
  • Reagieren Sie bei Bedarf auf D-Pad-Taps – Leicht tippen auf die Ecken des Touch Surface reagiert wie ein D-Pad auf einem Gamecontroller, der den Fokus oder die Richtung nach oben, unten, links oder rechts bewegt. Bei Bedarf sollten Sie auf diese Gesten in Ihrer App oder ihrem Spiel reagieren.

Siri-Remoteschaltflächen

Zusätzlich zu Gesten auf dem Touch Surface kann Ihre App auf den Benutzer reagieren, der auf das Touch Surface klickt oder die Wiedergabe-/Pause-Taste drückt. Wenn Sie über das GameController-Framework auf die Siri-Remote zugreifen, können Sie auch erkennen, welche Menütaste gedrückt wird.

Darüber hinaus können Menütastendrücke mithilfe einer Gestikerkennung mit Standardelementen UIKit erkannt werden. Wenn Sie die Menüschaltfläche abfangen, die gedrückt wird, sind Sie dafür verantwortlich, den aktuellen Ansichts- und Ansichtscontroller zu schließen und zum vorherigen zu wechseln.

Wichtig

Sie sollten der Wiedergabe-/Pause-Schaltfläche auf der Fernbedienung immer eine Funktion zuweisen. Wenn Sie eine nicht funktionsfähige Schaltfläche verwenden, kann ihre App für den Endbenutzer beschädigt werden. Wenn Sie keine gültige Funktion für diese Schaltfläche haben, weisen Sie die gleiche Funktion wie die primäre Schaltfläche zu (Touch Surface Click).

Gesten und Storyboards

Die einfachste Möglichkeit zum Arbeiten mit der Siri Remote in Ihrer Xamarin.tvOS-App ist das Hinzufügen von Gestikerkennungen zu Ihren Ansichten im Interface Designer.

Gehen Sie wie folgt vor, um eine Gestenerkennung hinzuzufügen:

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Main.storyboard Datei, und öffnen Sie sie zum Bearbeiten des Schnittstellen-Designers.

  2. Ziehen Sie eine Tippgestenerkennung aus der Bibliothek , und legen Sie sie in der Ansicht ab:

    Tippgestenerkennung

  3. Aktivieren Sie das Kontrollkästchen im Abschnitt "Schaltfläche" des Attributinspektors:

    Aktivieren

  4. Wählen Sie aus, dass die Geste auf den Benutzer reagiert, der auf dem Siri-Remote auf das Touch-Surface klickt. Sie haben auch die Möglichkeit, auf die Schaltflächen "Menü", "Wiedergabe/Pause", "Nach oben", "Nach unten", "Links" und "Rechts" zu reagieren.

  5. Verbinden Sie als Nächstes eine Aktion über die Tippgestenerkennung, und rufen Sie sie TouchSurfaceClickedauf:

    Eine Aktion aus der Tippgestenerkennung

  6. Speichern Sie Ihre Änderungen, und kehren Sie zu Visual Studio für Mac zurück.

Bearbeiten Sie die View Controller-Datei (Beispiel FirstViewController.cs), und fügen Sie den folgenden Code hinzu, um die ausgelöste Geste zu behandeln:

using System;
using UIKit;

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

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

Weitere Informationen zum Arbeiten mit Storyboards finden Sie in unserem Schnellstarthandbuch für Hello, tvOS. Insbesondere die Erstellung der Benutzeroberfläche und das Schreiben des Codes mit Aus- und Aktionsabschnitten .

Gesten und Code

Optional können Sie Gesten direkt im C#-Code erstellen und sie zu Ansichten auf der Benutzeroberfläche hinzufügen. Wenn Sie beispielsweise eine Reihe von Streifgestenerkennungen hinzufügen möchten, bearbeiten Sie ihren Ansichtscontroller, und fügen Sie den folgenden Code hinzu:

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
    }
}

Behandlung von Ereignissen auf niedriger Ebene

Wenn Sie einen benutzerdefinierten Typ basierend auf UIKit Ihrer Xamarin.tvOS-App (z. B UIView. ) erstellen, haben Sie auch die Möglichkeit, über Ereignisse eine low-Level-Behandlung von Tastendruck UIPress bereitzustellen.

Ein UIPress Ereignis besteht darin, tvOS zu sehen, was ein UITouch Ereignis für iOS ist, mit Ausnahme UIPress von Informationen über Tastendrücke auf den Siri Remote- oder anderen angeschlossenen Bluetooth-Geräten (z. B. einem GameController). UIPress Ereignisse beschreiben die Taste, die gedrückt wird, und ihren Zustand (Begonnen, Abgebrochen, Geändert oder beendet).

Bei analogen Tasten auf Geräten wie Bluetooth GameControllern gibt auch die Kraft zurück, UIPress die auf die Schaltfläche angewendet wird. Die Type Eigenschaft des UIPress Ereignisses definiert, welche physische Schaltfläche den Zustand geändert hat, während die restlichen Eigenschaften die aufgetretene Änderung beschreiben.

Der folgende Code zeigt ein Beispiel für die Behandlung von Ereignissen auf niedriger Ebene UIPress für ein 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
    }
}

Wie bei UITouch Ereignissen sollten Sie alle vier Implementieren, wenn Sie eines der UIPress Ereignisüberschreibungen implementieren müssen.

Bluetooth-Gamecontroller

Zusätzlich zu den Standardmäßigen Siri Remote, die mit dem Apple TV ausgeliefert wird, kann Made For iOS (MFI) Bluetooth Game Controller mit dem Apple TV gekoppelt und verwendet werden, um Ihre Xamarin.tvOS-App zu steuern.

Bluetooth-Gamecontroller

Gamecontroller können verwendet werden, um das Gameplay zu verbessern und ein Gefühl der Immersion in einem Spiel zu bieten. Sie können auch verwendet werden, um die standardmäßige Apple TV-Schnittstelle zu steuern, sodass die Verwendung nicht zwischen der Fernbedienung und dem Controller wechseln muss.

Wichtig

Bluetooth-Gamecontroller sind ein optionaler Kauf, den Endbenutzer möglicherweise tätigen, ihre App kann den Benutzer nicht zwingen, eines zu kaufen. Wenn Ihre App GameController unterstützt, muss sie auch die Siri Remote unterstützen, damit das Spiel von allen Apple TV-Benutzern verwendet werden kann.

Ein Gamecontroller verfügt über die folgenden Features und erwarteten Nutzungen in Ihrer tvOS-App:

Funktion Allgemeine App-Nutzung Verwendung von Spiele-Apps
D-Pad Navigiert durch UI-Elemente (Änderungsfokus). Hängt vom Spiel ab.
A Aktiviert das ausgewählte Element (im Fokus). Führt die Primäre Schaltflächenfunktion aus und bestätigt Dialogaktionen.
B Kehrt zum vorherigen Bildschirm zurück oder beendet den Startbildschirm, wenn sich der app-Standard Bildschirm befindet. Führt die Funktion der sekundären Schaltfläche aus oder kehrt zum vorherigen Bildschirm zurück.
X Startet die Medienwiedergabe oder die Wiedergabe anhalten/fortsetzen. Hängt vom Spiel ab.
Y Nicht zutreffend Hängt vom Spiel ab.
Menü Kehrt zum vorherigen Bildschirm zurück oder beendet den Startbildschirm, wenn sich der app-Standard Bildschirm befindet. Pause/Resume Gameplay, kehrt zum vorherigen Bildschirm zurück oder beendet den Startbildschirm, wenn sich auf dem Standard Bildschirm der App befindet.
Linke Schultertaste Navigiert nach links. Hängt vom Spiel ab.
Linker Trigger Navigiert nach links. Hängt vom Spiel ab.
Schaltfläche "Rechte Schulter" Navigiert nach rechts. Hängt vom Spiel ab.
Rechter Auslöser Navigiert nach rechts Hängt vom Spiel ab.
Linker Ministick Navigiert durch UI-Elemente (Änderungsfokus). Hängt vom Spiel ab.
Rechter Ministick Nicht zutreffend Hängt vom Spiel ab.

Apple bietet die folgenden Vorschläge für die Arbeit mit Gamecontrollern:

  • Bestätigen Sie gamecontroller Verbinden ions - Ihre tvOS-App kann jederzeit vom Endbenutzer gestartet und beendet werden. Sie sollten immer nach dem Vorhandensein eines Gamecontrollers bei App-Start- oder Wachzeiten suchen und bei Bedarf Maßnahmen ergreifen.
  • Stellen Sie sicher, dass Ihre App sowohl auf Siri Remote- als auch auf Gamecontrollern funktioniert – Benutzer müssen nicht zwischen der Siri-Fernbedienung und einem Gamecontroller wechseln, um Ihre App zu verwenden. Testen Sie Ihre App häufig mit beiden Controllertypen, um sicherzustellen, dass alles einfach zu navigieren ist und wie erwartet funktioniert.
  • Bereitstellen eines Rückwegs – Das Drücken der Menüschaltfläche sollte immer zum vorherigen Bildschirm zurückkehren. Wenn sich der Benutzer auf dem Standard App-Bildschirm befindet, sollte die Schaltfläche "Menü" sie auf den Apple TV-Startbildschirm zurücksetzen. Während des Spiels sollte die Menüschaltfläche eine Warnung anzeigen, die dem Benutzer die Möglichkeit gibt, das Spiel anzuhalten/fortzusetzen oder zum Standard Menü zurückzukehren.

Arbeiten mit Gamecontrollern

Wie oben erwähnt, kann der Benutzer neben dem Standard Siri Remote, der mit dem Apple TV ausgeliefert wird, optional einen Drittanbieter, Made For iOS (MFI) Bluetooth Game Controller anfügen und es verwenden, um Ihre Xamarin.tvOS-App zu steuern.

Wenn Ihre App Eingaben auf niedriger Ebene benötigt, können Sie das Game Controller Framework von Apple verwenden, das die folgenden Änderungen für tvOS hat:

Supportanforderungen für Gamecontroller

Apple hat mehrere spezifische Anforderungen, die erfüllt werden müssen, wenn Ihre Xamarin.tvOS-App Gamecontroller unterstützt:

  • Sie müssen die Siri Remote unterstützen - Sie müssen immer die Siri Remote unterstützen. Ihr Spiel kann keinen Gamecontroller eines Drittanbieters erfordern, um spielbar zu sein.
  • Sie müssen das erweiterte Steuerelementlayout unterstützen – Alle tvOS-Gamecontroller sind nicht formfitting, erweiterte Controller.
  • Spiele müssen mit eigenständigen Controllern spielbar sein – Wenn Ihre App einen erweiterten Gamecontroller unterstützt, muss sie ausschließlich mit diesem GameController gespielt werden.
  • Sie müssen die Wiedergabe-/Pausenschaltfläche unterstützen – Wenn der Benutzer die Wiedergabe-/Pause-Schaltfläche drückt, sollten Sie eine Warnung anzeigen, die dem Benutzer die Möglichkeit gibt, das Spiel anzuhalten/fortzusetzen oder zum Standard Menü zurückzukehren.

Aktivieren der Gamecontrollerunterstützung

Um die GameController-Unterstützung in Ihrer Xamarin.tvOS-App zu aktivieren, doppelklicken Sie auf die Info.plist Datei im Projektmappen-Explorer, um sie zur Bearbeitung zu öffnen:

Der Info.plist-Editor

Platzieren Sie im Abschnitt "Game Controller " eine Überprüfung durch Aktivieren von Gamecontrollern, und überprüfen Sie dann alle Gamecontrollertypen, die von der App unterstützt werden.

Verwenden der Siri-Fernbedienung als Gamecontroller

Die Siri-Fernbedienung, die mit dem Apple TV ausgestattet ist, kann als begrenzter GameController verwendet werden. Wie bei anderen Gamecontrollern wird sie im Game Controller Framework als GCController Objekt angezeigt und unterstützt sowohl die GCMotion Profile als auch die GCMicroGamepad Profile.

Die Siri-Fernbedienung hat die folgenden Merkmale, wenn sie als Gamecontroller verwendet werden:

  • Das Touch Surface kann als D-Pad verwendet werden, das analoge Eingabedaten bereitstellt.
  • Die Fernbedienung kann entweder im Hoch- oder Querformat verwendet werden, und Ihre App entscheidet, ob das Profilobjekt Eingabedaten automatisch kippen soll.
  • Das Klicken auf das Touch-Surface funktioniert wie das Drücken der Taste A auf einem GameController.
  • Die Schaltfläche "Wiedergabe/Pause" fungiert wie die Schaltfläche "X " auf einem Gamecontroller.
  • Die Menüschaltfläche sollte eine Warnung anzeigen, die dem Benutzer die Möglichkeit gibt, das Spiel anzuhalten/fortzusetzen oder zum Standard Menü zurückzukehren.

Bestimmen der Eingabe des Gamecontrollers

Im Gegensatz zu iOS, bei denen GameController-Ereignisse parallel zu Touchereignissen empfangen werden können, verarbeitet tvOS alle Ereignisse auf niedriger Ebene, um allgemeine UIKit Ereignisse bereitzustellen. Wenn Sie daher Zugriff auf die Low-Level-Gamecontroller-Ereignisse benötigen, müssen Sie das Standardverhalten deaktivieren UIKit.

Wenn Sie die GameController-Eingabe direkt verarbeiten möchten, müssen Sie unter tvOS eine GCEventViewController (oder eine Unterklasse) verwenden, um die Benutzeroberfläche des Spiels anzuzeigen. Wenn es sich GCEventViewController um den First Responder handelt, wird die Eingabe des Gamecontrollers über das GameController-Framework erfasst und an Ihre App übermittelt.

Mit der UserInteractionEnabled Eigenschaft der GCEventViewController Klasse können Sie umschalten, wie Ereignisse verarbeitet und behandelt werden.

Informationen zur Implementierung der GameController-Unterstützung finden Sie im Abschnitt "Arbeiten mit Gamecontrollern" von Apple im Programmierhandbuch für tvOS und Gamecontroller.

Zusammenfassung

In diesem Artikel wurde die neue Siri Remote behandelt, die mit den Apple TV-, Touch Surface-Gesten und Siri Remote-Tasten ausgeliefert wird. Als Nächstes wurde die Arbeit mit Gesten und Storyboards, Gesten und Code und Ereignissen auf niedriger Ebene behandelt. Abschließend wird die Arbeit mit Gamecontrollern erläutert.