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.
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.
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 (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:
Nella Esplora soluzioni fare doppio clic sul
Main.storyboard
file e aprirlo per la modifica di Progettazione interfaccia.Trascinare un riconoscimento movimento tocco dalla libreria e rilasciarlo nella visualizzazione:
Selezionare la sezione Pulsante di Controllo attributi:
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 .
Collegare quindi un'azione dal riconoscimento movimento tocco e chiamarla
TouchSurfaceClicked
: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.
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:
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 UIKit
il 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.