Udostępnij za pośrednictwem


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.

Zdalny i kontroler gier Bluetooth

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.

Pilot Siri

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 Uaktywnia wybrany element Przyciski kierunkowe
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:

  1. W Eksplorator rozwiązań kliknij Main.storyboard dwukrotnie plik i otwórz go w celu edytowania Projektant interfejsu.

  2. Przeciągnij aparat rozpoznawania gestów naciśnięcia z biblioteki i upuść go w widoku:

    Rozpoznawanie gestów naciśnięcia

  3. Zaznacz pozycję Wybierz w sekcji Przycisk inspektora atrybutów:

    Zaznacz pole wyboru

  4. 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.

  5. Następnie połącz akcję z narzędzia rozpoznawania gestów naciśnięcia i wywołaj ją TouchSurfaceClicked :

    Akcja z rozpoznawania gestów naciśnięcia

  6. 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ść TypeUIPress 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 Bluetooth

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:

Edytor Info.plist

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ć UIKitdomyś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.