Aşağıdaki prosedür, iOS gönderen uygulamanızı Cast SDK v2'den GCKCastContext müfettişine dayalı CAF Gönderen'e dönüştürmenize olanak tanır.
Giriş
- CAF Gönderen, Google Cast geliştirici web sitesinde ve v2 gibi CocoaPods'da dağıtılmaya devam etmektedir.
- Google Cast tasarım kontrol listesine uyma sorumluluğunu üstlenen yeni sınıflar eklendi.
- CAF Gönderen, Cast UX gereksinimlerine uygun widget'lar sağlar. v2, herhangi bir kullanıcı arayüzü bileşeni sağlamaz ve bu widget'ları uygulamanızı gerektirmez.
- CAF Gönderen tasarımı, Cast Android SDK tasarımıyla tutarlıdır.
- CAF Gönderen, Bitcode'u destekler (ör. v2).
- CAF'deki altyazı v2'ye benzer.
Bağımlılıklar
CAF Gönderen, iOS 8 ve sonraki sürümleri destekler.
Başlatma
CAF'de Cast çerçevesi için açık bir başlatma adımı gerekir. Bu süreç, Web Alıcısı uygulama kimliğini ve diğer genel seçenekleri belirtmek için uygun bir GCKCastOptions
kullanılarak GCKCastContext
Singleton'ının başlatılmasını içerir. Bu işlem genellikle AppDelegate
-[application:didFinishLaunchingWithOptions:]
yöntemiyle yapılır:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
v2'de bu adıma gerek kalmadı.
Cihaz bulma
CAF'de, keşif süreci, uygulama ön plana gelip sırasıyla arka plana geçtiğinde çerçeve ile otomatik olarak başlatılır ve durdurulur. v2'nin GCKDeviceScanner
ve GCKFilterCriteria
sınıfları kullanımdan kaldırıldı ve kullanılmamalıdır.
Yayınla düğmesi ve Yayın iletişim kutusu
CAF'de, Yayınla düğmesi ve iletişim kutusu çerçeve tarafından sağlanır. Yayınla düğmesi şu şekilde başlatılabilir ve gezinme çubuğuna şu şekilde eklenebilir:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
Yayınla düğmesi, resimli taslaka da eklenebilir.
Bir kullanıcı düğmeye dokunduğunda Yayın iletişim kutusu otomatik olarak gösterilir.
Cihaz kontrolü
CAF'de cihaz kontrolü büyük ölçüde çerçeve tarafından yönetilir. Gönderen uygulamanın cihaza bağlanma ve Web Alıcısı uygulamasını başlatma gibi işlemler yapması gerekmez. v2 sınıfı
GCKDeviceManager
kullanımdan kaldırıldı ve kullanılmamalıdır. Gönderen ve Web Alıcısı arasındaki etkileşim artık "oturum" olarak temsil ediliyor. CAF GCKSessionManager
sınıfı, oturum yaşam döngüsünü işler ve kullanıcı hareketlerine göre oturumları otomatik olarak başlatıp durdurur: Kullanıcı, Yayın iletişim kutusunda Yayın cihazı seçtiğinde başlatılır ve kullanıcı, Yayın iletişim kutusundaki "Yayını Durdur" düğmesine dokunduğunda veya gönderen uygulamanın kendisi sonlandığında sona erer. Oturum yaşam döngüsü etkinlikleri hakkında
gönderen uygulamaya bildirim gönderilebilir.GCKSessionManagerListener
GCKSessionManager
GCKSessionManagerListener
protokolü tüm oturum yaşam döngüsü etkinlikleri için geri çağırma yöntemlerini tanımlar.
GCKCastSession
sınıfı, bir Yayın cihazıyla olan oturumu temsil eder. Sınıfta, cihazın ses düzeyini ve ses kapatma durumlarını kontrol etme yöntemleri vardı. Bu işlemler daha önce GCKDeviceManager
üzerinde yöntemler kullanılarak v2'de yapılıyordu.
2. sürümde, GCKDeviceManagerDelegate
protokolü ses düzeyi, sesi kapatma durumu, bekleme durumu gibi cihaz durumunda yapılan değişikliklerle ilgili bildirimleri sağladı.
CAF'de, ses/sesi açma durum değişikliği bildirimleri GCKSessionManagerListener
protokolündeki geri çağırma yöntemleri aracılığıyla iletilir. Bu dinleyiciler, GCKSessionManager
hesabına kaydedilir.
Kalan tüm cihaz durumu bildirimleri bir GCKCastDeviceStatusListener
protokolü aracılığıyla iletilir. Bu dinleyiciler, GCKCastSession
hesabına kaydedilir.
Yeniden bağlantı mantığı
v2'de olduğu gibi CAF, geçici kablosuz ağ sinyali kaybı veya diğer ağ hataları nedeniyle kaybolan ağ bağlantılarını yeniden kurmaya çalışır. Bu işlem artık oturum düzeyinde gerçekleştirilir. Bağlantı kesildiğinde oturum "askıya alındı" durumuna geçebilir ve bağlantı tekrar kurulduğunda "bağlı" durumuna geri döner. Çerçeve, bu sürecin bir parçası olarak Web Alıcısı uygulamasına ve tüm Yayın kanallarını yeniden bağlar.
Buna ek olarak, CAF otomatik oturum devam ettirme de ekler. Gönderen uygulama arka plana gönderilirse veya (kaydırarak ya da kilitlenme nedeniyle) bir Yayın oturumu devam ederken kapatılırsa çerçeve, gönderen uygulama ön plana geri döndüğünde veya yeniden başlatıldığında tekrar oturum açmaya çalışır. Bu işlem, kayıtlı GCKSessionManagerListener
örneklerinde uygun geri çağırmaları yapacak GCKSessionManager
tarafından otomatik olarak işlenir.
Özel kanal kaydı
2. sürümde, özel kanallar (GCKCastChannel
alt sınıfı veya bir GCKGenericChannel
ve yetkili temsilci kullanılarak uygulandı) GCKDeviceManager
ile kaydedildi.
CAF'de özel kanallar bunun yerine GCKCastSession
örneğine kaydedilir. Kayıt, GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
geri çağırma yönteminden yapılabilir. Medya uygulamaları için artık GCKMediaControlChannel
etiketini açık bir şekilde kaydetmeniz gerekmez. Daha fazla bilgi için aşağıdaki bölümü inceleyin.
Medya kontrolü
v2 sınıfı
GCKMediaControlChannel
kullanımdan kaldırıldı ve kullanılmamalıdır. Daha kullanışlı bir API'de eş değer işlevler sunan yeni GCKRemoteMediaClient
sınıfının yerini CAF'de alır.
Bu nesnenin açık bir şekilde başlatılması veya kaydedilmesi gerekmez. Web Alıcısı uygulamasının medya ad alanını desteklemesi durumunda, çerçeve otomatik olarak nesneyi anlık hâle getirir ve oturumun başlangıcında ana medya kanalını kaydeder.
GCKRemoteMediaClient
öğesine GCKCastSession
nesnesinin -[remoteMediaClient]
özelliğiyle erişebilirsiniz.
v2'de, GCKMediaControlChannel
ürününde yayınlanan tüm medya istekleri sayısal bir istek kimliği döndürecek ve GCKMediaControlChannelDelegate
'teki yöntemler, isteğin tamamlanması veya başarısız olması durumunda bildirim gönderirken bu kimliği sağlayacaktır.
CAF'de GCKRemoteMediaClient
üzerinde yayınlanan tüm medya istekleri bir GCKRequest
nesnesi döndürür. Bu nesnede, isteğin ilerleme durumunu ve nihai sonucunu izlemek için kullanılabilecek ilişkili bir GCKRequestDelegate
protokolü bulunur.
v2
GCKMediaControlChannel
GCKMediaControlChannelDelegate
üzerinden Web Alıcısı'nda medya oynatıcı durumundaki değişikliklerle ilgili bildirim gönderir.
CAF'deki GCKRemoteMediaClient
, GCKRemoteMediaClientListener
protokolü üzerinden eşdeğer geri çağırmalar sağlar. İstediğiniz sayıda dinleyiciye GCKRemoteMediaClient
kaydedilebilir. Bu sayede birden fazla gönderen bileşeni, oturumla ilişkilendirilen tek GCKRemoteMediaClient
örneğini paylaşabilir.
v2'de gönderen uygulamanın, kullanıcı arayüzünü Web Alıcısındaki medya oynatıcı durumuyla senkronize tutma yüküne sahip olması gerekmiştir. CAF'de bu sorumluluğun büyük bir kısmı GCKUIMediaController
sınıfındadır. Bu bileşenin nasıl kullanılacağına dair örnekler için codelab eğitim dokümanlarına bakın.
Tanıtım amaçlı yer paylaşımı
V2, tanıtım amaçlı yer paylaşımı kullanıcı arayüzü sağlamaz.
CAF, bir gönderen uygulamanın kullanıcılara ilk gösterildiğinde Yayınla düğmesini vurgulamak için kullanabileceği bir yöntemle
GCKCastContext
-[presentCastInstructionsViewControllerOnce]
eklenir.
Mini kumanda
v2'de, gönderen uygulamasında sıfırdan bir mini kumanda uygulamanız gerekir.
CAF'de çerçeve, kalıcı kontroller göstermek istediğiniz sahnelere ekleyebileceğiniz bir kontrol çubuğu sağlar: GCKUIMiniMediaControlsViewController
. Mini denetleyiciyi bir gönderen uygulamasına eklemenin iki yolu vardır:
Mevcut görüntüleme denetleyicinizi
GCKUICastContainerViewController
ile sarıp görünümün altına birGCKUIMiniMediaControlsViewController
ekleyerek Cast çerçevesinin mini kumandanın düzenini yönetmesine izin verin.Mini kumandayı bir
-[createMiniMediaControlsViewController]
GCKUIMiniMediaControlsViewController
örneği örneği oluşturmak ve ardından bunu alt görünüm olarak container görünümü denetleyiciye eklemek için doğrudan mevcut görünüm kumandanıza ekleyin.
Genişletilmiş kumanda
v2'de, gönderen uygulamasında sıfırdan genişletilmiş bir kumanda uygulamanız gerekir.
CAF, genişletilmiş kumandayı daha kolay uygulamak için kullanabileceğiniz GCKUIMediaController
'i ekler.
CAF, uygulamanıza kolayca ekleyebileceğiniz, önceden oluşturulmuş bir genişletilmiş kumanda widget'ı GCKUIExpandedMediaControlsViewController
ekler. Artık GCKUIMediaController
özelliğini kullanarak özel bir genişletilmiş kumanda uygulamanız gerekmez.
Hata ayıklama günlük kaydı
2. sürümdeki GCKLogger
ve GCKLoggerDelegate
sınıfları, bazı değişiklikler ve geliştirmelerle CAF'ye taşınır.
GCKLoggerDelegate
-[logFromFunction:message:]
yöntemi kullanımdan kaldırıldı ve yerine -[logMessage:fromFunction:]
kullanılıyor.
Artık çerçeve günlük mesajları, uygun bir GCKLoggerFilter
örneği oluşturup GCKLogger
teklisinin -[filter]
özelliğini ayarlayarak atanarak filtrelenebilir.
Örnek uygulamalar
CAF için yazılan codelab ve örnek uygulamalara göz atmanızı öneririz.