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.
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 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 (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:
Doppelklicken Sie im Projektmappen-Explorer auf die
Main.storyboard
Datei, und öffnen Sie sie zum Bearbeiten des Schnittstellen-Designers.Ziehen Sie eine Tippgestenerkennung aus der Bibliothek , und legen Sie sie in der Ansicht ab:
Aktivieren Sie das Kontrollkästchen im Abschnitt "Schaltfläche" des Attributinspektors:
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.
Verbinden Sie als Nächstes eine Aktion über die Tippgestenerkennung, und rufen Sie sie
TouchSurfaceClicked
auf: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.
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:
- Das Micro Game Controller-Profil (
GCMicroGamepad
) wurde hinzugefügt, um die Siri Remote zu erreichen. - Die neue
GCEventViewController
Klasse kann verwendet werden, um Gamecontrollerereignisse über Ihre App weiterzuleiten. Weitere Informationen finden Sie im Abschnitt "Bestimmen der Gamecontrollereingabe" weiter unten.
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:
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.