Aracılığıyla paylaş


Xamarin'de tvOS için Siri Remote ve Bluetooth Denetleyicileri

Xamarin.tvOS uygulamanızın kullanıcıları, cihazın ekranındaki görüntülere dokunduğu iOS ile olduğu gibi doğrudan arabirimiyle etkileşim kurmaz, siri remote kullanarak dolaylı olarak odanın her yerinden etkileşim kurar.

Uygulamanız bir oyunsa, isteğe bağlı olarak uygulamanızda 3. taraf, Made For iOS (MFI) Bluetooth Oyun Kumandaları için destek oluşturabilirsiniz.

Bluetooth Uzak ve Oyun Kumandası

Bu makalede Siri Uzak, Dokunmatik Yüzey Hareketleri ve Siri Uzak Düğmeleri açıklanır ve Hareket ve Görsel Taslaklar, Hareketler ve Kod ve Düşük Düzey Olay İşleme aracılığıyla bunlarla nasıl çalışıldığı gösterilir. Son olarak, Xamarin.tvOS uygulamasında Oyun Kumandalarıyla Çalışma konusunu ele alır.

The Siri Remote

Kullanıcıların Apple TV ve Xamarin.tvOS uygulamanızla etkileşim kurmasının ana yolu, dahil edilen Siri Remote'dan geçer. Apple, kanepede oturan kullanıcı ile TV ekranında odada görüntülenen Apple TV'nin kullanıcı arabirimi arasındaki mesafeyi köprüleyecek şekilde uzaktan kumandayı tasarladı.

TvOS uygulama geliştiricisi olarak karşılaştığınız zorluk, Siri Remote'un dokunmatik yüzeyi, ivmeölçer, jiroskop ve düğmelerinden yararlanan hızlı, kullanımı kolay ve görsel olarak ilgi çekici bir kullanıcı arabirimi oluşturmaktır.

The Siri Remote

Siri Remote, tvOS uygulamanızda aşağıdaki özelliklere ve beklenen kullanımlara sahiptir:

Özellik Genel Uygulama Kullanımı Oyun Uygulaması Kullanımı
Surface'a dokunun
Gezinmek için çekin, bağlam menülerini seçmek ve basılı tutmak için basın.
Dokunma/Çekme
Odaklanabilir öğeler arasında kullanıcı arabirimi gezintisi.

Tıklatın
Seçili (odaktaki) öğeyi etkinleştirir.
Dokunma/Çekme
Oyun tasarımına bağlıdır ve kenarlara dokunarak D-Pad olarak kullanılabilir.

Tıklatın
Birincil düğme işlevini gerçekleştirin.
Menü
Önceki ekrana veya menüye dönmek için basın.
Önceki ekrana döner ve ana uygulama ekranından Apple TV Giriş ekranına çıkar. Oyunu duraklatıp sürdürür, önceki ekrana döner ve ana uygulama ekranından Apple TV Giriş ekranına çıkar.
Siri/Arama
Siri'nin olduğu ülkelerde ses denetimi için basılı tutun, diğer tüm ülkelerde Arama Ekranı görüntülenir.
yok yok
Yürüt/Duraklat
Medyayı Yürüt ve Duraklat veya uygulamalarda ikincil bir işlev sağlar.
Medya kayıttan yürütmeyi başlatır ve kayıttan yürütmeyi duraklatır/sürdürür. İkincil düğme işlevi gerçekleştirir veya tanıtım videosunu atlar (varsa).
Giriş Sayfası
Giriş ekranına dönmek için basın, çalışan uygulamaları görüntülemek için çift tıklayın, uyku cihazına basılı tutun.
yok yok
Hacim
Bağlı ses/video ekipmanı ses düzeyini denetler.
yok yok

Dokunmatik Yüzey Hareketleri

Siri Remote'un Dokunmatik Yüzeyi, Xamarin.tvOS uygulamanızda yanıt verebileceğiniz çeşitli tek parmak hareketlerini algılayabilir:

Çekme İleri'ye Dokunma
Seçimi taşır Seçili öğeyi etkinleştirir Yön düğmeleri
Seçimi (odağı) ekrandaki kullanıcı arabirimi öğeleri arasında (yukarı, sol, sağ) taşır. Çekme, eylemsizlik kullanılarak büyük içerik listelerinde hızla gezinmek için kullanılabilir. Seçili (odaktaki) öğeyi etkinleştirir veya bir oyundaki birincil düğme gibi davranır. Tıklayıp basılı tutmak bağlam menülerini veya ikincil işlevleri etkinleştirebilir. Kenarlardaki Dokunmatik Yüzey'e hafifçe dokunarak, dokunulduğu alana bağlı olarak odağı yukarı, aşağı, sola veya sağa hareket ettiren D-Pad'de yön düğmeleri gibi hareket eder. Uygulamaya bağlı olarak, gizli denetimleri ortaya çıkarmak için kullanılabilir.

Apple, Touch Surface hareketleriyle çalışmak için aşağıdaki önerileri sağlar:

  • Tıklamalar ve Dokunmalar Arasında Ayrım - Tıklamak, kullanıcı tarafından yapılan kasıtlı bir eylemdir ve bir oyunun seçimi, etkinleştirmesi ve birincil düğmesi için çok uygundur. Dokunma daha hafiftir ve kullanıcı genellikle Siri Remote'u elinde tuttuğundan ve yanlışlıkla bir Dokunma olayını kolayca etkinleştirebildiğinden, tedbirli bir şekilde kullanılmalıdır.
  • Standart Hareketleri Yeniden Tanımlama - Kullanıcının belirli hareketlerin belirli eylemleri gerçekleştirmesi beklentisi vardır; uygulamanızda bu hareketlerin anlamını veya işlevini yeniden tanımlamamalısınız. Tek istisna, etkin oyun sırasında bir oyun uygulamasıdır.
  • Yeni Hareketleri Tedbirli Bir Şekilde Tanımlama - Kullanıcının da belirli hareketlerin belirli eylemleri gerçekleştireceği beklentisi vardır. Standart eylemler gerçekleştirmek için özel hareketler tanımlamaktan kaçınmanız gerekir. Ve yine, oyunlar özel hareketlerin oyuna eğlenceli, çevreleyici bir oyun ekleyebildiği en olağan istisnadır.
  • Uygunsa, D-Pad Dokunmalarına Yanıt Ver - Dokunmatik Yüzey'in köşe kenarlarına hafifçe dokunulduğunda, odağı veya yönü yukarı, aşağı, sola veya sağa hareket ettiren bir oyun kumandası üzerindeki D-Pad gibi tepki verir. Uygunsa, uygulamanızda veya oyununuzda bu hareketlere yanıt vermelisiniz.

Siri Uzak Düğmeleri

Touch Surface'taki hareketlere ek olarak, uygulamanız kullanıcının Touch Surface'a tıklamasına veya Oynat/Duraklat düğmesine basmasına yanıt verebilir. Oyun Kumandası Çerçevesi'ni kullanarak Siri Remote'a erişiyorsanız, basılan Menü düğmesini de algılayabilirsiniz.

Ayrıca, standart UIKit öğelerle bir Hareket Tanıma kullanılarak menü düğmesine basılması algılanabilir. Basılmakta olan Menü düğmesine müdahale ederseniz, geçerli Görünüm ve Görünüm Denetleyicisi'ni kapatmak ve öncekine dönmek sizin sorumluluğundadır.

Önemli

Uzak taraftaki Yürüt/Duraklat düğmesine her zaman bir işlev atamanız gerekir. İşlevsel olmayan bir düğmeye sahip olmak, uygulamanızın son kullanıcıya bozuk görünmesine neden olabilir. Bu düğme için geçerli bir işleviniz yoksa, birincil düğmeyle aynı işlevi atayın (Dokunmatik Yüzey Tıklama).

Hareketler ve Görsel Taslaklar

Xamarin.tvOS uygulamanızda Siri Remote ile çalışmanın en kolay yolu, Arabirim Tasarım Aracı görünümlerinize Hareket Tanıyıcıları eklemektir.

Hareket Tanıyıcısı eklemek için aşağıdakileri yapın:

  1. Çözüm Gezgini, dosyaya Main.storyboard çift tıklayın ve Arabirim Tasarım Aracı düzenlemek üzere açın.

  2. Kitaplıktan Dokunma Hareketi Tanıyıcısı'nısürükleyip Görünüm'e bırakın:

    Dokunma Hareketi Tanıyıcısı

  3. Öznitelik Denetçisi'nin Düğme bölümünde Seç'i işaretleyin:

    Seç'i Denetle

  4. Seç, hareketin kullanıcının Siri Remote'ta Touch Surface'a tıklamasına yanıt vereceği anlamına gelir. Menü, Yürüt/Duraklat, Yukarı, Aşağı, Sol ve Sağ düğmelerine de yanıt verme seçeneğiniz vardır.

  5. Ardından, Dokunma Hareketi Tanıyıcısı'ndan bir Eylem ayarlayın ve şunu çağırınTouchSurfaceClicked:

    Dokunma Hareketi Tanıyıcısından Eylem

  6. Değişikliklerinizi kaydedin ve Mac için Visual Studio dönün.

Görünüm Denetleyicisi (örnek FirstViewController.cs) dosyanızı düzenleyin ve tetiklenen hareketi işlemek için aşağıdaki kodu ekleyin:

using System;
using UIKit;

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

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

Görsel Taslaklarla çalışma hakkında daha fazla bilgi için lütfen Hello, tvOS Hızlı Başlangıç Kılavuzu'na bakın. Özellikle Kullanıcı Arabirimi Oluşturma ve Çıkışlar ve eylemlerle Kod Yazma bölümleri.

Hareketler ve Kod

İsteğe bağlı olarak, doğrudan C# kodunda hareketler oluşturabilir ve bunları Kullanıcı Arabiriminizdeki görünümlere ekleyebilirsiniz. Örneğin, bir dizi Çekme Hareketi Tanıyıcısı eklemek için Görünüm Denetleyicinizi düzenleyin ve aşağıdaki kodu ekleyin:

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

Alt Düzey Olay İşleme

Xamarin.tvOS uygulamanızda (örneğin UIView) temel alan UIKit bir özel tür oluşturuyorsanız, etkinlikler aracılığıyla UIPress düğme basıldığında alt düzey işleme olanağı da sağlayabilirsiniz.

Olay UIPress , iOS için bir UITouch olayın ne olduğu tvOS'a yöneliktir, ancak UIPress Siri Remote veya diğer bağlı Bluetooth cihazlarında (Oyun Kumandası gibi) düğme basmaları hakkında bilgi döndürür. UIPress olaylar, basılmakta olan düğmeyi ve durumunu (Başladı, İptal Edildi, Değiştirildi veya Sona Erdi) açıklar.

Bluetooth Oyun Kumandaları gibi cihazlardaki analog düğmeler için, UIPress düğmeye uygulanan kuvvet miktarını da döndürür. Type olayın özelliği hangi fiziksel düğmenin UIPress durumunu değiştirdiğini tanımlarken, diğer özelliklerde gerçekleşen değişiklik açıklanır.

Aşağıdaki kod, bir için alt düzey UIPress olayları işleme örneğini UIViewgösterir:

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

Olaylarda UITouch olduğu gibi, olay geçersiz kılmalarından herhangi birini UIPress uygulamanız gerekiyorsa, dörtünü de uygulamanız gerekir.

Bluetooth Oyun Kumandaları

Apple TV ile birlikte gelen standart Siri Remote'a ek olarak, 3. taraf, Made For iOS (MFI) Bluetooth Oyun Kumandaları Apple TV ile eşleştirilebilir ve Xamarin.tvOS uygulamanızı kontrol etmek için kullanılabilir.

Bluetooth Oyun Kumandaları

Oyun Kumandaları oyunu geliştirmek ve bir oyuna daldırma hissi sağlamak için kullanılabilir. Ayrıca standart Apple TV arabirimini kontrol etmek için de kullanılabilir, böylece kullanım uzak ile denetleyici arasında geçiş yapmak zorunda değildir.

Önemli

Bluetooth Oyun Kumandaları, son kullanıcıların gerçekleştirebileceği isteğe bağlı bir satın alma işlemidir; uygulamanız kullanıcıyı satın almak için zorlayamaz. Uygulamanız Oyun Kumandalarını destekliyorsa, oyunun tüm Apple TV kullanıcıları tarafından kullanılabilmesi için Siri Remote'un da destekleniyor olması gerekir.

Oyun Kumandası, tvOS uygulamanızda aşağıdaki özelliklere ve beklenen kullanımlara sahiptir:

Özellik Genel Uygulama Kullanımı Oyun Uygulaması Kullanımı
D-Pad Kullanıcı arabirimi öğelerinde gezinirken (odağı değiştirir). Oyuna bağlı.
A Seçili (odaktaki) öğeyi etkinleştirir. Birincil düğme işlevini gerçekleştirir ve iletişim kutusu eylemlerini onaylar.
B Önceki ekrana döner veya uygulamanın ana ekranındaysa Giriş ekranından çıkar. İkincil düğme işlevini gerçekleştirir veya önceki ekrana döner.
X Medya kayıttan yürütmeyi başlatır veya kayıttan yürütmeyi duraklatır/sürdürür. Oyuna bağlı.
Y yok Oyuna bağlı.
Menü Önceki ekrana döner veya uygulamanın ana ekranındaysa Giriş ekranından çıkar. Oyunu duraklatma/sürdürme, önceki ekrana dönme veya uygulamanın ana ekranındaysa Giriş ekranından çıkma.
Sol Omuz Düğmesi Sola gider. Oyuna bağlı.
Sol Tetikleyici Sola gider. Oyuna bağlı.
Sağ Omuz Düğmesi Sağa gider. Oyuna bağlı.
Sağ Tetikleyici Sağa Gider Oyuna bağlı.
Sol Parmak Çubuğu Kullanıcı arabirimi öğelerinde gezinirken (odağı değiştirir). Oyuna bağlı.
Sağ Parmak Çubuğu yok Oyuna bağlı.

Apple, Oyun Kumandaları ile çalışmak için aşağıdaki önerileri sağlar:

  • Oyun Kumandası Bağlan ions onaylayın - tvOS uygulamanız istediğiniz zaman son kullanıcı tarafından başlatılabilir ve durdurulabilir. Uygulama başlangıç veya uyanıklık zamanlarında her zaman Oyun Kumandası olup olmadığını kontrol etmeli ve gerektiğinde harekete geçmelisiniz.
  • Uygulamanızın hem Siri Remote hem de Game Controller'larda çalıştığından emin olun - Kullanıcıların uygulamanızı kullanmak için Siri Remote ile Oyun Kumandası arasında geçiş yapmalarını zorunlu etmeyin. Her şeyin kolayca gezinildiğinden ve beklendiği gibi çalıştığından emin olmak için uygulamanızı her iki denetleyici türüyle de sık sık test edin.
  • Bir Geri Dönüş Yolu Sağlayın - Menü düğmesine basmak her zaman önceki ekrana dönmelidir. Kullanıcı ana uygulama ekranındaysa, Menü düğmesi bunları Apple TV Giriş ekranına döndürmelidir. Oyun sırasında, Menü düğmesi kullanıcıya oyunu duraklatma/sürdürme veya ana menüye geri dönme olanağı veren bir uyarı görüntülemelidir.

Oyun Kumandalarıyla Çalışma

Yukarıda belirtildiği gibi, Apple TV ile birlikte gelen standart Siri Remote'a ek olarak, kullanıcı isteğe bağlı olarak bir 3. taraf, Made For iOS (MFI) Bluetooth Oyun Kumandaları ekleyebilir ve Xamarin.tvOS uygulamanızı kontrol etmek için kullanabilir.

Uygulamanız düşük düzeyli denetleyici girişi gerektiriyorsa, apple'ın tvOS için aşağıdaki değişiklikleri içeren Game Controller Framework'lerini kullanabilirsiniz:

Oyun Kumandası Destek Gereksinimleri

Xamarin.tvOS uygulamanız Oyun Kumandalarını destekliyorsa Apple'ın karşılanması gereken birkaç özel gereksinimi vardır:

  • Siri Remote'ı Desteklemeniz Gerekir - Siri Remote'ı her zaman desteklemeniz gerekir. Oyununuz 3. taraf Oyun Kumandası'nın oynanabilir olmasını gerektiremez.
  • Genişletilmiş Kontrol Düzenini Desteklemeniz Gerekir - Tüm tvOS Oyun Kumandaları uygun olmayan, genişletilmiş denetleyicilerdir.
  • Oyunlar Tek Başına Oyun Kumandalarıyla Oynanabilir Olmalıdır - Uygulamanız Genişletilmiş Oyun Kumandası destekliyorsa, yalnızca bu Oyun Kumandası ile oynanabilir olmalıdır.
  • Oynat/Duraklat Düğmesini Desteklemeniz Gerekir - Oyun sırasında, kullanıcı Oynat/Duraklat düğmesine basarsa, kullanıcıya oyunu duraklatma/sürdürme veya ana menüye geri dönme olanağı veren bir uyarı görüntülemeniz gerekir.

Oyun Denetleyicisi Desteğini Etkinleştirme

Xamarin.tvOS uygulamanızda Oyun Denetleyicisi desteğini etkinleştirmek için Çözüm Gezgini dosyaya çift tıklayarak Info.plist düzenlemek üzere açın:

Info.plist düzenleyicisi

Oyun Kumandası bölümünde, Oyun Kumandalarını Etkinleştir'e göre bir denetim yapın, ardından uygulama tarafından desteklenecek tüm Oyun Kumandası türlerini denetleyin.

Siri Remote'un Oyun Kumandası Olarak Kullanılması

Apple TV ile birlikte gelen Siri Remote, sınırlı bir Oyun Kumandası olarak kullanılabilir. Diğer Oyun Kumandaları gibi, Game Controller Framework'te bir GCController nesne olarak gösterilir ve hem hem GCMicroGamepad de GCMotion profillerini destekler.

Siri Remote, Oyun Kumandası olarak kullanılırken aşağıdaki özelliklere sahiptir:

  • Touch Surface, analog giriş verileri sağlayan bir D-pad olarak kullanılabilir.
  • Uzak, dikey veya yatay yönlendirmede kullanılabilir ve uygulamanız profil nesnesinin giriş verilerini otomatik olarak çevirip çevirmeyeceğine karar verir.
  • Touch Surface'a tıklanması, Oyun Kumandası'nda A düğmesine basmak gibi davranır.
  • Oynat/Duraklat düğmesi, Oyun Kumandası'nda X düğmesi gibi davranır.
  • Menü düğmesi, kullanıcıya oyunu duraklatma/sürdürme veya ana menüye geri dönme olanağı veren bir uyarı görüntülemelidir.

Oyun Kumandası Girişini Belirleme

Oyun Kumandası olaylarının Dokunmatik olaylarla paralel olarak alınabildiği iOS'un aksine, tvOS üst düzey olaylar sunmak UIKit için tüm alt düzey olayları işler. Sonuç olarak, düşük düzey Oyun Kumandası olaylarına erişmeniz gerekiyorsa, 'nin varsayılan davranışını kapatmanız UIKitgerekir.

tvOS'ta, Oyun Kumandası girişini doğrudan işlemek istediğinizde, oyunun Kullanıcı Arabirimini görüntülemek için bir GCEventViewController (veya alt sınıf) kullanmanız gerekir. GCEventViewController a, İlk Yanıtlayıcı olduğunda, Oyun Kumandası girişi yakalanır ve Oyun Denetleyicisi Çerçevesi aracılığıyla uygulamanıza teslim edilir.

Olayların işlenme ve işlenme şeklini değiştirmek için sınıfının özelliğini GCEventViewController kullanabilirsinizUserInteractionEnabled.

Oyun Kumandası desteği uygulama hakkında bilgi için lütfen tvOS ve Oyun Kumandası Programlama Kılavuzu'nun Uygulama Programlama Kılavuzu'ndaki Apple'ın Oyun Kumandalarıyla Çalışma bölümüne bakın.

Özet

Bu makalede Apple TV, Touch Surface hareketleri ve Siri Remote düğmeleriyle birlikte gelen yeni Siri Remote ele alınmıştır. Daha sonra hareketler ve Görsel Taslaklar, hareketler, kod ve alt düzey olaylarla çalışmayı ele alır. Son olarak, Oyun Kumandaları ile çalışma konusu ele alındıysa.