Siri Remote and Bluetooth Controllers for tvOS in Xamarin
Użytkownicy aplikacji Xamarin.tvOS nie będą wchodzić w interakcje z interfejsem bezpośrednio w systemie iOS, gdzie naciskają obrazy na ekranie urządzenia, ale pośrednio z całego pokoju przy użyciu Funkcji Siri Remote.
Jeśli Twoja aplikacja jest grą, możesz opcjonalnie utworzyć obsługę innych firm, Made For iOS (MFI) Kontrolery gier Bluetooth w aplikacji.
W tym artykule opisano zdalne gesty Siri, gesty powierzchni dotykowej i przyciski zdalne Siri oraz pokazano, jak pracować z nimi za pośrednictwem gestów i scenorysów, gestów i kodu oraz obsługi zdarzeń niskiego poziomu. Na koniec omówiono pracę z kontrolerami gier w aplikacji platformy Xamarin.tvOS.
Pilot Siri
Głównym sposobem interakcji użytkowników z urządzeniem Apple TV i aplikacją platformy Xamarin.tvOS jest korzystanie z dołączonego pilota Siri Remote. Apple zaprojektowało zdalną odległość między użytkownikiem siedzącym na kanapie a interfejsem użytkownika apple TV wyświetlanym w całym pokoju na ekranie telewizora.
Twoim wyzwaniem jako deweloper aplikacji tvOS jest szybkie, łatwe w użyciu i wizualnie atrakcyjny interfejs użytkownika, który korzysta z powierzchni dotykowej, akcelerometru Siri Remote, żyroskopu i przycisków.
Funkcja Siri Remote ma następujące funkcje i oczekiwane użycie w aplikacji tvOS:
Funkcja | Ogólne użycie aplikacji | Użycie aplikacji gry |
---|---|---|
Powierzchnia dotykowa Szybko przesuń, aby przejść, naciśnij, aby wybrać i przytrzymaj menu kontekstowe. |
Naciśnij/przesuń palcem Nawigacja interfejsu użytkownika między elementami z możliwością koncentracji uwagi. Kliknij pozycję Aktywuje wybrany element (fokus). |
Naciśnij/przesuń palcem Zależy od projektu gry i może być używany jako D-Pad, naciskając krawędzie. Kliknij pozycję Wykonaj funkcję przycisku podstawowego. |
Menu Naciśnij klawisz , aby powrócić do poprzedniego ekranu lub menu. |
Wraca do poprzedniego ekranu i zamyka ekran główny apple TV z ekranu głównego aplikacji. | Wstrzymywanie i wznawianie rozgrywki, wraca do poprzedniego ekranu i kończy się na ekranie głównym aplikacji Apple TV Home screen. |
Siri/Search W krajach z Siri naciśnij i przytrzymaj sterowanie głosem, we wszystkich innych krajach, wyświetla ekran wyszukiwania. |
nie dotyczy | nie dotyczy |
Odtwarzanie/wstrzymywanie Odtwarzanie i wstrzymywanie multimediów lub udostępnia funkcję pomocniczą w aplikacjach. |
Uruchamia odtwarzanie multimediów i wstrzymywanie/wznawianie odtwarzania. | Wykonuje funkcję przycisku pomocniczego lub pomija wprowadzenie wideo (jeśli istnieje). |
Strona główna Naciśnij klawisz , aby wrócić do ekranu głównego, kliknij dwukrotnie, aby wyświetlić uruchomione aplikacje, naciśnij i przytrzymaj, aby uśpić urządzenie. |
nie dotyczy | nie dotyczy |
Volume Steruje dołączonym głośnością sprzętu audio/wideo. |
nie dotyczy | nie dotyczy |
Gesty powierzchni dotykowej
Urządzenie Siri Remote Touch Surface jest w stanie wykryć różne gesty pojedynczego palca, które można odpowiedzieć w aplikacji Xamarin.tvOS:
Szybkie przesuwanie | Kliknij pozycję | Zawartość |
---|---|---|
Przenosi zaznaczenie (fokus) między elementami interfejsu użytkownika na ekranie (w górę, w dół w lewo, w prawo). Przesuwanie może służyć do szybkiego przewijania dużych list zawartości przy użyciu inercji. | Aktywuje wybrany element (w fokusie) lub działa jak przycisk podstawowy w grze. Kliknięcie i przytrzymanie może aktywować menu kontekstowe lub funkcje pomocnicze. | Lekko dotykając powierzchni Dotykowej na krawędziach działa jak przyciski kierunkowe na podkładce D, przesuwając fokus w górę, w dół, w lewo lub w prawo w zależności od obszaru naciśniętego obszaru. W zależności od aplikacji można użyć do ujawnienia ukrytych kontrolek. |
Firma Apple udostępnia następujące sugestie dotyczące pracy z gestami Touch Surface:
- Rozróżnianie kliknięć i naciśnięcia — kliknięcie jest zamierzonym działaniem użytkownika i nadaje się do wyboru, aktywacji i podstawowego przycisku gry. Naciśnięcie jest bardziej subtelne i powinno być używane oszczędnie, ponieważ użytkownik często trzyma Siri Remote w ręku i może przypadkowo aktywować zdarzenie Tap łatwo.
- Nie należy ponownie definiować standardowych gestów — użytkownik ma oczekiwanie, że określone gesty będą wykonywać określone akcje, nie należy ponownie definiować znaczenia ani funkcji tych gestów w aplikacji. Jednym wyjątkiem jest aplikacja gry podczas aktywnej rozgrywki.
- Zdefiniuj nowe gesty oszczędnie — ponownie użytkownik ma oczekiwanie, że określone gesty będą wykonywać określone akcje. Należy unikać definiowania niestandardowych gestów w celu wykonywania standardowych akcji. I znowu, gry są najbardziej typowym wyjątkiem, w którym niestandardowe gesty mogą dodać zabawę, immersyjne grać w grę.
- Jeśli jest to odpowiednie, Odpowiedź na naciśnięcia D-Pad - lekko dotykając krawędzi rogu powierzchni dotykowej będzie reagować jak D-Pad na kontroler gry przesuwa fokus lub kierunek w górę, w dół, w lewo lub w prawo. W razie potrzeby należy reagować na te gesty w aplikacji lub grze.
Przyciski zdalne Siri
Oprócz gestów na urządzeniu Touch Surface aplikacja może reagować na kliknięcie urządzenia Touch Surface lub naciśnięcie przycisku Odtwórz/Wstrzymaj. Jeśli uzyskujesz dostęp do funkcji Siri Remote przy użyciu platformy Game Controller, możesz również wykryć naciśnięcie przycisku Menu.
Ponadto naciśnięcia przycisku menu można wykryć przy użyciu aparatu rozpoznawania gestów ze standardowymi UIKit
elementami. Jeśli przechwycisz naciśnięcie przycisku Menu, będziesz odpowiedzialny za zamknięcie bieżącego kontrolera widoku i widoku i powrót do poprzedniego.
Ważne
Zawsze należy przypisać funkcję do przycisku Odtwórz/Wstrzymaj na zdalnym. Użycie przycisku niefunkcjonalnego może sprawić, że aplikacja będzie wyglądała na uszkodzoną dla użytkownika końcowego. Jeśli nie masz prawidłowej funkcji dla tego przycisku, przypisz tę samą funkcję co przycisk podstawowy (Touch Surface Click).
Gesty i scenorysy
Najprostszym sposobem pracy z funkcją Siri Remote w aplikacji Xamarin.tvOS jest dodanie funkcji Rozpoznawanie gestów do widoków w Projektant interfejsu.
Aby dodać rozpoznawanie gestów, wykonaj następujące czynności:
W Eksplorator rozwiązań kliknij
Main.storyboard
dwukrotnie plik i otwórz go w celu edytowania Projektant interfejsu.Przeciągnij aparat rozpoznawania gestów naciśnięcia z biblioteki i upuść go w widoku:
Zaznacz pozycję Wybierz w sekcji Przycisk inspektora atrybutów:
Wybierz oznacza, że gest odpowie użytkownikowi, klikając urządzenie Touch Surface na urządzeniu Siri Remote. Masz również możliwość odpowiadania na przyciski Menu, Odtwórz/Wstrzymaj, W górę, W dół, W lewo i w prawo.
Następnie połącz akcję z narzędzia rozpoznawania gestów naciśnięcia i wywołaj ją
TouchSurfaceClicked
:Zapisz zmiany i wróć do Visual Studio dla komputerów Mac.
Edytuj plik Kontrolera widoku (przykład FirstViewController.cs
) i dodaj następujący kod, aby obsłużyć wyzwalany gest:
using System;
using UIKit;
namespace tvRemote
{
public partial class FirstViewController : UIViewController
{
...
#region Custom Actions
partial void TouchSurfaceClicked (Foundation.NSObject sender) {
// Handle click here
...
}
#endregion
}
}
Aby uzyskać więcej informacji na temat pracy z scenorysami, zobacz przewodnik Szybki start dotyczący funkcji Hello, tvOS. W szczególności sekcje Tworzenie interfejsu użytkownika i Pisanie kodu z punktami i akcjami .
Gesty i kod
Opcjonalnie możesz tworzyć gesty bezpośrednio w kodzie języka C# i dodawać je do widoków w interfejsie użytkownika. Aby na przykład dodać serię funkcji rozpoznawania gestów przesunięcia, zmodyfikuj kontroler widoku i dodaj następujący kod:
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
}
}
Obsługa zdarzeń niskiego poziomu
Jeśli tworzysz typ niestandardowy na UIKit
podstawie aplikacji platformy Xamarin.tvOS (na przykład UIView
), masz również możliwość zapewnienia obsługi niskiego poziomu naciśnięcia przycisku za pośrednictwem UIPress
zdarzeń.
UIPress
Zdarzeniem jest tvOS, co UITouch
zdarzenie jest dla systemu iOS, z wyjątkiem UIPress
zwraca informacje o naciśnięciu przycisku na Siri Remote lub innych dołączonych urządzeniach Bluetooth (takich jak Kontroler gier). UIPress
zdarzenia opisują naciśnięcie przycisku i jego stan (Rozpoczęte, Anulowane, Zmienione lub Zakończone).
W przypadku przycisków analogowych na urządzeniach, takich jak Kontrolery gier Bluetooth, UIPress
zwraca również ilość siły stosowanej do przycisku. Właściwość Type
UIPress
zdarzenia definiuje, który przycisk fizyczny zmienił stan, podczas gdy pozostałe właściwości opisują zmianę, która wystąpiła.
Poniższy kod przedstawia przykład obsługi zdarzeń niskiego poziomu UIPress
dla elementu 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
}
}
Podobnie jak w przypadku zdarzeń UITouch
, jeśli musisz zaimplementować dowolne przesłonięcia zdarzeń UIPress
, należy zaimplementować wszystkie cztery.
Kontrolery gier Bluetooth
Oprócz standardowego Pilota Siri, który jest dostarczany z apple TV, innej firmy, Made For iOS (MFI) Kontrolery gier Bluetooth mogą być sparowane z Apple TV i używane do sterowania aplikacją Xamarin.tvOS.
Kontrolery gier mogą służyć do ulepszania rozgrywki i zapewniają poczucie zanurzenia w grze. Mogą być one również używane do sterowania standardowym interfejsem Apple TV, dzięki czemu użycie nie musi przełączać się między pilotem a kontrolerem.
Ważne
Kontrolery gier Bluetooth to opcjonalny zakup, który użytkownicy końcowi mogą dokonać, aplikacja nie może wymusić na użytkowniku zakupu. Jeśli Aplikacja obsługuje kontrolery gier, musi również obsługiwać Siri Remote, aby gra była używana przez wszystkich użytkowników apple TV.
Kontroler gier ma następujące funkcje i oczekiwane użycie w aplikacji tvOS:
Funkcja | Ogólne użycie aplikacji | Użycie aplikacji gry |
---|---|---|
D-Pad | Przechodzi przez elementy interfejsu użytkownika (fokus zmian). | Zależy od gry. |
A | Aktywuje wybrany element (w fokusie). | Wykonuje funkcję przycisku podstawowego i potwierdza akcje okna dialogowego. |
B | Wraca do poprzedniego ekranu lub kończy działanie na ekranie głównym, jeśli na głównym ekranie aplikacji. | Wykonuje funkcję przycisku pomocniczego lub powraca do poprzedniego ekranu. |
X | Uruchamia odtwarzanie multimediów lub wstrzymuje/wznawia odtwarzanie. | Zależy od gry. |
Y | nie dotyczy | Zależy od gry. |
Menu | Wraca do poprzedniego ekranu lub kończy działanie na ekranie głównym, jeśli na głównym ekranie aplikacji. | Wstrzymywanie/wznawianie rozgrywki, powraca do poprzedniego ekranu lub kończy się na ekranie głównym aplikacji, jeśli na głównym ekranie aplikacji. |
Lewy przycisk ramię | Przechodzi w lewo. | Zależy od gry. |
Lewy wyzwalacz | Przechodzi w lewo. | Zależy od gry. |
Prawy przycisk ramię | Przechodzi w prawo. | Zależy od gry. |
Wyzwalacz z prawej | Przechodzi w prawo | Zależy od gry. |
Lewa szminka | Przechodzi przez elementy interfejsu użytkownika (fokus zmian). | Zależy od gry. |
Prawa szminka | nie dotyczy | Zależy od gry. |
Firma Apple udostępnia następujące sugestie dotyczące pracy z kontrolerami gier:
- Potwierdź Połączenie kontrolera gier — aplikację tvOS można uruchomić i zatrzymać w dowolnym momencie przez użytkownika końcowego. Zawsze należy sprawdzić obecność kontrolera gry na początku aplikacji lub obudzić się i podjąć działania zgodnie z potrzebami.
- Upewnij się, że Aplikacja działa zarówno na zdalnych kontrolerach Siri, jak i kontrolerach gier — nie wymagaj od użytkowników przełączania się między Pilotem Siri i kontrolerem gier w celu korzystania z aplikacji. Przetestuj aplikację często przy użyciu obu typów kontrolerów, aby wszystko było łatwe do nawigowania i działa zgodnie z oczekiwaniami.
- Podaj stronę powrotną — naciśnięcie przycisku Menu powinno zawsze powrócić do poprzedniego ekranu. Jeśli użytkownik znajduje się na ekranie głównej aplikacji, przycisk Menu powinien zwrócić je do ekranu głównego apple TV. W trakcie rozgrywki przycisk Menu powinien wyświetlić alert umożliwiający użytkownikowi wstrzymanie/wznowienie rozgrywki lub powrót do menu głównego.
Praca z kontrolerami gier
Jak wspomniano powyżej, oprócz standardowego pilota Siri Remote dostarczanego z urządzeniem Apple TV, użytkownik może opcjonalnie dołączyć inną firmę, Made For iOS (MFI) Bluetooth Game Controllers i używać go do sterowania aplikacją Xamarin.tvOS.
Jeśli aplikacja wymagała danych wejściowych kontrolera niskiego poziomu, możesz używać struktury Game Controller Framework firmy Apple, która ma następujące modyfikacje dla systemu tvOS:
- Profil Mikro Game Controller (
GCMicroGamepad
) został dodany do elementu docelowego Siri Remote. - Nowa
GCEventViewController
klasa może służyć do kierowania zdarzeń kontrolera gier za pośrednictwem aplikacji. Aby uzyskać więcej informacji, zobacz sekcję Określanie danych wejściowych kontrolera gry poniżej.
Wymagania dotyczące obsługi kontrolera gier
Firma Apple ma kilka konkretnych wymagań, które muszą zostać spełnione, jeśli aplikacja Xamarin.tvOS obsługuje kontrolery gier:
- Musisz obsługiwać zdalne siri — zawsze musisz obsługiwać Funkcję Siri Remote. Twoja gra nie może wymagać kontrolera gry innej firmy, aby móc grać.
- Musisz obsługiwać rozszerzony układ sterowania — wszystkie kontrolery gier tvOS są niezwiązane, rozszerzone kontrolery.
- Gry muszą być odtwarzane z autonomicznymi kontrolerami — jeśli aplikacja obsługuje rozszerzony kontroler gry, musi być odtwarzana wyłącznie z tym kontrolerem gry.
- Musisz obsługiwać przycisk Odtwarzania/wstrzymywania — podczas rozgrywki, jeśli użytkownik naciśnie przycisk Play/Pause, powinien zostać wyświetlony alert informujący użytkownika o możliwości wstrzymania/wznowienia rozgrywki lub powrotu do menu głównego.
Włączanie obsługi kontrolera gier
Aby włączyć obsługę kontrolera gier w aplikacji Xamarin.tvOS, kliknij Info.plist
dwukrotnie plik w Eksplorator rozwiązań, aby otworzyć go do edycji:
W sekcji Game Controller (Kontroler gier) sprawdź, czy w obszarze Włącz kontrolery gier sprawdź wszystkie typy kontrolerów gier, które będą obsługiwane przez aplikację.
Korzystanie z pilota Siri jako kontrolera gry
Siri Remote, który jest wyposażony w urządzenie Apple TV, może być używany jako ograniczony kontroler gry. Podobnie jak w przypadku innych kontrolerów gier, jest on wyświetlany w strukturze Game Controller Jako GCController
obiekt i obsługuje zarówno GCMotion
profile, jak i GCMicroGamepad
.
Siri Remote ma następujące cechy, gdy są używane jako kontroler gry:
- Powierzchnię Dotykową można używać jako podkładki D, która zapewnia dane wejściowe analogowe.
- Zdalne może być używane w orientacji pionowej lub poziomej, a aplikacja decyduje, czy obiekt profilu powinien automatycznie przerzucać dane wejściowe.
- Kliknięcie urządzenia Touch Surface działa jak naciśnięcie przycisku A na kontrolerze gier.
- Przycisk Odtwórz/Wstrzymaj działa jak przycisk X na kontrolerze gry.
- Przycisk Menu powinien wyświetlić alert umożliwiający użytkownikowi wstrzymanie/wznowienie rozgrywki lub powrót do menu głównego.
Określanie danych wejściowych kontrolera gry
W przeciwieństwie do systemu iOS, w którym zdarzenia kontrolera gier mogą być odbierane równolegle ze zdarzeniami touch, system tvOS przetwarza wszystkie zdarzenia niskiego poziomu w celu dostarczania zdarzeń wysokiego poziomu UIKit
. W związku z tym, jeśli potrzebujesz dostępu do zdarzeń kontrolera gier niskiego poziomu, musisz wyłączyć UIKit
domyślne zachowanie.
W systemie tvOS, jeśli chcesz przetworzyć dane wejściowe kontrolera gry bezpośrednio, musisz użyć GCEventViewController
(lub podklasy) do wyświetlenia interfejsu użytkownika gry. Za każdym razem, gdy element jest pierwszą odpowiedziąGCEventViewController
, dane wejściowe kontrolera gry zostaną przechwycone i dostarczone do aplikacji za pośrednictwem struktury kontrolera gry.
Za pomocą UserInteractionEnabled
właściwości GCEventViewController
klasy można przełączać sposób przetwarzania i obsługi zdarzeń.
Aby uzyskać informacje na temat implementowania obsługi kontrolera gier, zobacz sekcję Praca firmy Apple z kontrolerami gier w przewodniku programowania aplikacji dla systemu tvOS i podręcznika programowania kontrolera gier.
Podsumowanie
W tym artykule omówiono nowy pilot Siri, który jest dostarczany z urządzeniami Apple TV, gestami Touch Surface i przyciskami Siri Remote. Następnie omówiła pracę z gestami i scenorysami, gestami i kodami oraz zdarzeniami niskiego poziomu. Na koniec, jeśli omówiono pracę z kontrolerami gier.