Controller Siri remoti e Bluetooth per tvOS in Xamarin

Gli utenti dell'app Xamarin.tvOS non interagiranno direttamente con l'interfaccia, come con iOS, in cui toccano le immagini sullo schermo del dispositivo, ma indirettamente da tutta la stanza usando siri remoto.

Se la tua app è un gioco, puoi facoltativamente compilare il supporto per terze parti, made for iOS (MFI) Bluetooth Game Controllers nella tua app.

Il controller remoto e il controller di gioco Bluetooth

Questo articolo descrive i movimenti di Siri Remote, Touch Surface eSiri Remote Buttons e illustra come usarli tramite movimenti e storyboard, movimenti e codice e gestione degli eventi di basso livello. Infine, illustra l'uso dei controller di gioco in un'app Xamarin.tvOS.

The Siri Remote

Il modo principale in cui gli utenti interagiranno con Apple TV e l'app Xamarin.tvOS consiste nell'usare siri remoto incluso. Apple ha progettato il telecomando per colmare la distanza tra l'utente seduto sul divano e l'interfaccia utente di Apple TV visualizzata nella stanza sullo schermo TV.

La tua sfida come sviluppatore di app tvOS è la creazione di un'interfaccia utente rapida, facile da usare e visivamente accattivante che sfrutta la superficie touch di Siri Remote, l'accelerometro, il giroscopio e i pulsanti.

The Siri Remote

Siri Remote offre le funzionalità e gli utilizzi previsti seguenti all'interno dell'app tvOS:

Funzionalità Utilizzo generale delle app Utilizzo delle app di gioco
Superficie di tocco
Scorrere rapidamente per spostarsi, premere per selezionare e tenere premuto i menu contestuali.
Tocca/Scorri rapidamente
Spostamento interfaccia utente tra elementi attivabili.

Clic
Attiva l'elemento selezionato (con stato attivo).
Tocca/Scorri rapidamente
Dipende dalla progettazione del gioco e può essere usato come D-Pad toccando i bordi.

Clic
Eseguire la funzione del pulsante primario.
Menu
Premere per tornare alla schermata o al menu precedente.
Torna alla schermata precedente ed esce dalla schermata principale della schermata Home di Apple TV. Sospendere e riprendere il gioco, tornare alla schermata precedente e uscire dalla schermata iniziale di Apple TV dalla schermata principale dell'app.
Siri/Ricerca
Nei paesi con Siri, premere e tenere premuto per il controllo vocale, in tutti gli altri paesi, visualizza la schermata di ricerca.
n/d n/d
Riproduci/Sospendi
Riprodurre e sospendere il supporto o fornisce una funzione secondaria nelle app.
Avvia la riproduzione multimediale e sospende/riprendi la riproduzione. Esegue la funzione del pulsante secondario o ignora il video introduttivo (se esistente).
Home
Premere per tornare alla schermata Home, fare doppio clic per visualizzare le app in esecuzione, tenere premuto il dispositivo di sospensione.
n/d n/d
Volume
Controlla il volume delle apparecchiature audio/video collegate.
n/d n/d

Movimenti della superficie di tocco

Siri Remote Touch Surface è in grado di rilevare un'ampia gamma di movimenti a dita singola a cui è possibile rispondere nell'app Xamarin.tvOS:

Scorrimento rapido Clic Tocco
Sposta la selezione Attiva l'elemento selezionato Pulsanti direzionali
Sposta la selezione (stato attivo) tra gli elementi dell'interfaccia utente sullo schermo (su, giù a sinistra, a destra). Lo scorrimento rapido può essere usato per scorrere rapidamente elenchi di contenuti di grandi dimensioni usando l'inerzia. Attiva l'elemento selezionato (con stato attivo) o agisce come il pulsante principale in un gioco. Facendo clic e tenendo premuto è possibile attivare menu contestuali o funzioni secondarie. Toccando leggermente la superficie touch sui bordi si comporta come pulsanti direzionali su un D-Pad, spostando lo stato attivo verso l'alto, verso il basso, a sinistra o a destra a seconda dell'area toccata. A seconda dell'app, può essere usato per rivelare i controlli nascosti.

Apple offre i suggerimenti seguenti per l'uso dei movimenti di Touch Surface:

  • Distinguere tra clic e tap : il clic è un'azione intenzionale da parte dell'utente ed è ideale per la selezione, l'attivazione e il pulsante principale di un gioco. Il tocco è più sottile e deve essere usato con moderazione perché l'utente spesso tiene il siri remoto nella mano e può attivare accidentalmente un evento Tap facilmente.
  • Non ridefinire i movimenti standard: l'utente prevede che movimenti specifici eseguano azioni specifiche, non è consigliabile ridefinire il significato o la funzione di questi movimenti nell'app. L'unica eccezione è un'app di gioco durante il gioco attivo.
  • Definisci nuovi movimenti con moderazione : anche in questo caso, l'utente prevede che movimenti specifici eseguano azioni specifiche. È consigliabile evitare di definire movimenti personalizzati per eseguire azioni standard. E ancora, i giochi sono l'eccezione più consueta in cui i gesti personalizzati possono aggiungere divertimento, gioco immersivo al gioco.
  • Se appropriato, rispondi ai tocco D-Pad: toccando leggermente i bordi dell'angolo della superficie di tocco risponderà come un D-Pad su un controller di gioco che sposta lo stato attivo o la direzione verso l'alto, verso il basso, verso il basso, a sinistra o a destra. Se appropriato, devi rispondere a questi movimenti nella tua app o nel gioco.

Pulsanti remoti siri

Oltre ai movimenti su Touch Surface, l'app può rispondere all'utente facendo clic su Touch Surface o premendo il pulsante Riproduci/Sospendi. Se si accede a Siri Remote con Game Controller Framework, è anche possibile rilevare il pulsante Menu premuto.

Inoltre, è possibile rilevare i tasti di scelta rapida usando un riconoscimento movimento con elementi standard UIKit . Se intercetta il pulsante Menu premuto, si sarà responsabili della chiusura della visualizzazione corrente e del controller di visualizzazione e tornare a quello precedente.

Importante

Devi sempre assegnare una funzione al pulsante Play/Pause sul telecomando. La presenza di un pulsante non funzionale può rendere l'app danneggiata per l'utente finale. Se non hai una funzione valida per questo pulsante, assegna la stessa funzione del pulsante primario (Touch Surface Click).

Movimenti e storyboard

Il modo più semplice per usare Siri Remote nell'app Xamarin.tvOS consiste nell'aggiungere riconoscimento movimenti alle visualizzazioni in Progettazione interfacce.

Per aggiungere un riconoscimento movimenti, eseguire le operazioni seguenti:

  1. Nella Esplora soluzioni fare doppio clic sul Main.storyboard file e aprirlo per la modifica di Progettazione interfaccia.

  2. Trascinare un riconoscimento movimento tocco dalla libreria e rilasciarlo nella visualizzazione:

    Riconoscimento movimento tocco

  3. Selezionare la sezione Pulsante di Controllo attributi:

    Selezionare

  4. Seleziona indica che il movimento risponderà all'utente facendo clic su Touch Surface su Siri Remote. Hai anche la possibilità di rispondere ai pulsanti Menu, Play/Pause, Up, Down, Left e Right .

  5. Collegare quindi un'azione dal riconoscimento movimento tocco e chiamarla TouchSurfaceClicked:

    Un'azione dal riconoscimento movimento tocco

  6. Salvare le modifiche e tornare a Visual Studio per Mac.

Modificare il file View Controller (esempio FirstViewController.cs) e aggiungere il codice seguente per gestire il movimento attivato:

using System;
using UIKit;

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

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

Per altre informazioni sull'uso degli storyboard, vedere la guida introduttiva hello, tvOS. In particolare, le sezioni Creazione dell'interfaccia utente e scrittura del codice con punti di accesso e azioni .

Movimenti e codice

Facoltativamente, è possibile creare movimenti direttamente nel codice C# e aggiungerli alle visualizzazioni nell'interfaccia utente. Ad esempio, per aggiungere una serie di riconoscitori di movimento di scorrimento rapido, modificare il controller di visualizzazione e aggiungere il codice seguente:

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

Gestione di eventi di basso livello

Se si sta creando un tipo personalizzato basato sull'app UIKit Xamarin.tvOS ( ad esempio UIView), è anche possibile fornire una gestione di basso livello della pressione dei pulsanti tramite UIPress eventi.

Un UIPress evento è quello di tvOS che cosa un UITouch evento è per iOS, ad eccezione UIPress di restituisce informazioni sulle pressioni dei pulsanti su Siri Remote o su altri dispositivi Bluetooth collegati (ad esempio un Controller di gioco). UIPress gli eventi descrivono il pulsante premuto e il relativo stato (Iniziato, Annullato, Modificato o Terminato).

Per i pulsanti analogici su dispositivi come i controller di gioco Bluetooth, UIPress restituisce anche la quantità di forza applicata al pulsante. La Type proprietà dell'evento UIPress definisce lo stato del pulsante fisico modificato, mentre il resto delle proprietà descrive la modifica che si è verificata.

Il codice seguente illustra un esempio di gestione degli eventi di basso livello UIPress per un oggetto 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
    }
}

Come per UITouch gli eventi, se è necessario implementare uno degli override dell'evento UIPress , è necessario implementare tutti e quattro.

Controller di gioco Bluetooth

Oltre al telecomando Siri standard fornito con Apple TV, terze parti, Made For iOS (MFI) Bluetooth Game Controllers può essere associato a Apple TV e usato per controllare l'app Xamarin.tvOS.

Controller di gioco Bluetooth

I controller di gioco possono essere usati per migliorare il gioco e fornire un senso di immersione in un gioco. Possono anche essere usati per controllare l'interfaccia standard di Apple TV, in modo che l'uso non deve passare dal telecomando al controller.

Importante

I controller di gioco Bluetooth sono un acquisto facoltativo che gli utenti finali potrebbero effettuare, l'app non può forzare l'utente ad acquistarne uno. Se l'app supporta game controller, deve anche supportare Siri Remote in modo che il gioco sia utilizzabile da tutti gli utenti di Apple TV.

Un game controller include le funzionalità e gli utilizzi previsti seguenti all'interno dell'app tvOS:

Funzionalità Utilizzo generale delle app Utilizzo delle app di gioco
D-Pad Spostarsi tra gli elementi dell'interfaccia utente (modifica lo stato attivo). Dipende dal gioco.
A Attiva l'elemento selezionato (con stato attivo). Esegue la funzione del pulsante principale e conferma le azioni della finestra di dialogo.
B Torna alla schermata precedente o esce dalla schermata Home se nella schermata principale dell'app. Esegue la funzione del pulsante secondario o torna alla schermata precedente.
X Avvia la riproduzione multimediale o sospende/riprende la riproduzione. Dipende dal gioco.
Y n/d Dipende dal gioco.
Menu Torna alla schermata precedente o esce dalla schermata Home se nella schermata principale dell'app. Sospendere/riprendere il gioco, tornare alla schermata precedente o uscire dalla schermata Home se nella schermata principale dell'app.
Pulsante a sinistra della spalla Si sposta a sinistra. Dipende dal gioco.
Trigger sinistro Si sposta a sinistra. Dipende dal gioco.
Pulsante a spalla destra Si sposta a destra. Dipende dal gioco.
Trigger destro Si sposta a destra Dipende dal gioco.
Levetta sinistra Spostarsi tra gli elementi dell'interfaccia utente (modifica lo stato attivo). Dipende dal gioco.
Levetta destra n/d Dipende dal gioco.

Apple offre i suggerimenti seguenti per l'uso dei controller di gioco:

  • Confermare i Connessione controller di gioco: l'app tvOS può essere avviata e arrestata in qualsiasi momento dall'utente finale. Devi sempre verificare la presenza di un controller di gioco all'avvio o all'orario di sveglio dell'app e intervenire in base alle esigenze.
  • Assicurati che l'app funzioni sia su Siri Remote che su Game Controller : non richiedere agli utenti di passare da Siri Remote a Game Controller per usare la tua app. Testare l'app spesso con entrambi i tipi di controller assicurando che tutto sia facile da esplorare e funzioni come previsto.
  • Specificare un metodo Way Back : premendo il pulsante Menu dovrebbe sempre tornare alla schermata precedente. Se l'utente si trova nella schermata principale dell'app, il pulsante Menu deve restituirli alla schermata Home di Apple TV. Durante il gioco, il pulsante Menu dovrebbe visualizzare un avviso che dà all'utente la possibilità di sospendere/riprendere il gioco o tornare al menu principale.

Uso dei controller di gioco

Come indicato in precedenza, oltre allo standard Siri Remote fornito con Apple TV, l'utente può facoltativamente collegare un terzo party, Made For iOS (MFI) Bluetooth Game Controllers (MFI) e usarlo per controllare l'app Xamarin.tvOS.

Se l'app richiede l'input del controller di basso livello, puoi usare Game Controller Framework di Apple con le modifiche seguenti per tvOS:

  • Il profilo Micro Game Controller (GCMicroGamepad) è stato aggiunto per impostare come destinazione Siri Remote.
  • La nuova GCEventViewController classe può essere usata per instradare gli eventi del controller di gioco tramite l'app. Per altri dettagli, vedere la sezione Determinazione dell'input del controller di gioco di seguito.

Requisiti di supporto del controller di gioco

Apple ha diversi requisiti specifici che devono essere soddisfatti se l'app Xamarin.tvOS supporta i controller di gioco:

  • Devi supportare siri remoto : devi sempre supportare Siri Remote. Il gioco non può richiedere che un controller di gioco di terze parti sia riproducibile.
  • È necessario supportare il layout di controllo esteso: tutti i controller di gioco tvOS non formano controller estesi.
  • I giochi devono essere riproducibili con controller autonomi: se l'app supporta un controller di gioco esteso, deve essere riproducibile esclusivamente con il controller di gioco.
  • Devi supportare il pulsante Play/Pause - Durante il gioco, se l'utente preme il pulsante Play/Pause, devi visualizzare un avviso che consente all'utente di sospendere o riprendere il gioco o tornare al menu principale.

Abilitazione del supporto del controller di gioco

Per abilitare il supporto di Game Controller nell'app Xamarin.tvOS, fare doppio clic sul Info.plist file nel Esplora soluzioni per aprirlo per la modifica:

Editor Info.plist

Nella sezione Controller di gioco posizionare un controllo abilita controller di gioco, quindi controllare tutti i tipi di controller di gioco che saranno supportati dall'app.

Uso di Siri Remote as a Game Controller

Siri Remote fornito con Apple TV può essere usato come controller di gioco limitato. Come gli altri controller di gioco, viene visualizzato in Game Controller Framework come GCController oggetto e supporta sia i GCMotion profili che i GCMicroGamepad profili.

Siri Remote presenta le caratteristiche seguenti quando viene usato come game controller:

  • La superficie touch può essere usata come D-pad che fornisce dati di input analogici.
  • Il telecomando può essere usato con orientamento verticale o orizzontale e l'app decide se l'oggetto profilo deve capovolgere automaticamente i dati di input.
  • Facendo clic su Touch Surface si usa il pulsante A su un controller di gioco.
  • Il pulsante Play/Pause agisce come il pulsante X in un controller di gioco.
  • Il pulsante Menu dovrebbe visualizzare un avviso che consente all'utente di sospendere/riprendere il gioco o tornare al menu principale.

Determinazione dell'input del controller di gioco

A differenza di iOS in cui gli eventi di Game Controller possono essere ricevuti in parallelo con gli eventi touch, tvOS elabora tutti gli eventi di basso livello per recapitare eventi di alto livello UIKit . Di conseguenza, se hai bisogno di accedere agli eventi game controller di basso livello, dovrai disattivare UIKitil comportamento predefinito.

In tvOS, quando vuoi elaborare l'input di Game Controller direttamente devi usare una GCEventViewController (o una sottoclasse) per visualizzare l'interfaccia utente del gioco. Ogni volta che un GCEventViewController è il primo risponditore, l'input del controller di gioco verrà acquisito e recapitato all'app tramite Game Controller Framework.

È possibile utilizzare la proprietà della GCEventViewController classe per attivare o disattivare la UserInteractionEnabled modalità di elaborazione e gestione degli eventi.

Per informazioni sull'implementazione del supporto di Game Controller, vedi la sezione Uso dei controller di gioco di Apple nella Guida alla programmazione delle app per tvOS e Game Controller Programming Guide.

Riepilogo

Questo articolo ha illustrato il nuovo siri remoto fornito con apple TV, i movimenti touch surface e i pulsanti Siri Remote. Successivamente, ha illustrato l'uso di movimenti e storyboard, movimenti e codice e eventi di basso livello. Infine, se discusso dell'uso dei controller di gioco.