Bu kılavuzda, Yayın Alıcı v2 uygulamasının en son Web Alıcısı uygulamasına nasıl taşınacağı açıklanmaktadır.
Web Alıcısı v3 olarak da bilinen yeni Cast Uygulama Çerçevesi (CAF) SDK'sı, Alıcı v2 SDK'sının önemli bir yükseltmesidir. Web Alıcısı SDK'sı, medya Web Alıcısı uygulamaları geliştirmek için kolay ve basit bir SDK sağlar.
Web Alıcısı, yeni CAF gönderen API'larıyla daha tutarlı bir API sunar. Bir oynatıcı (MPL ve Shaka) ile tam entegrasyon sağlamanın yanı sıra Cast medya ve Google Asistan sesli komutlar için tam uygulama ve destek sunar. CAF SDK'sı ayrıca CSS kullanılarak kolayca biçimlendirilebilen varsayılan bir kullanıcı arayüzü ve kullanıcı arayüzü uygulamasını basitleştirmek için veri bağlama hizmeti sunar.
Neden taşınmalıdır?
Bir Alıcı v2 uygulamasını Web Alıcısı'na taşıyarak, oynatıcıyla ilgili birçok kodu ortadan kaldırabilirsiniz. Böylece, uygulamaya özgü iş mantığı yazmaya odaklanabilirsiniz.
CAF, MPL ve Shaka oynatıcılarını sorunsuz bir şekilde entegre ederek HTTP Canlı Yayını (TS ve CMAF), MPEG-DASH, Smooth Streaming ve Media Element kaynak mülkü (MP3, MP4, Icecast vb.) tarafından desteklenen türleri de dahil olmak üzere daha geniş bir içerik türünü destekler. Tam liste için Google Cast için Desteklenen Medya konusuna bakın. CAF şu anda kullanıcı tarafından sağlanan oynatıcıları desteklememektedir.
CAF'ye geçiş yaptığınızda, Google Asistan ile sesli kontrol desteği eklendi. CAF kullanılırken yeni Google Asistan sesli komutları otomatik olarak desteklenir.
"Kanalları dile göre değiştirme" ve "oynatma oranını değiştirme" gibi yeni medya komutlarını desteklemeye ek olarak CAF daha iyi sıralama, yerleşik reklam desteği ve daha iyi canlı destek sağlar.
Neler değişti?
Web Buyer API'si, Android ve iOS için CAF gönderenlerin uyguladığı kurallara uymaya çalışır ve v2'den oldukça farklıdır.
Web Alıcısı, açığa çıkan tüm API'ler için cast.receiver
ad alanı yerine yeni bir ad alanı cast.framework
kullanıyor. v2 tarafından kullanılan veri nesnelerinin çoğu CAF'de aynıdır ve cast.framework.messages
ad alanı altında (çoğunlukla cast.receiver.media
altında bulunurlar) açığa çıkar.
Aşağıdaki v2 hizmetleri, bunlara karşılık gelen CAF hizmetleri ile değiştirilmiştir:
CastReceiverManager
sınıfının yeriniCastReceiverContext
kullanıyor. Bu da yayınlama oturumunu, gönderenleri, özel mesaj göndermeyi ve küresel sistem etkinliklerini yöneten bir tekil lisanstır.CastReceiverOptions
bağlamsal bağlamda genel uygulama seçenekleri (sıra, alıcı sürümü, oynatma yapılandırması vb.) sunmak için kullanılabilir.MediaManager
sınıfının yeriniCastReceiverContext
tektonunun bir özelliği olanPlayerManager
alıyor. Bu sınıf; medya oturumunu, medya isteklerini, Google Asistan sesli isteklerini (2. sürüm olarakCommandAndControlManager
) yönetir ve medya etkinliklerini tetikler. Oynatıcılar için yapılandırma (MPL cinsindencast.player.api.Host
), dünya genelinde veya yükleme isteği başına sağlanabilenPlaybackConfig
tarafından sağlanır.
PlayerManager
, yeni alt yönetici sınıflarını da gösterir:
TextTracksManager
: Medya metin parçalarını yönetir.AudioTracksManager
: Ses parçalarını yönetir.QueueManager
- Sırayı yönetin.BreakManager
: Reklamları yönetin.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
Alıcı iş mantığı
İş mantığı eklemek için alıcı v2'nin gösterildiği etkinlik işleyicileri (CastReceiverManager.onReady
veya MediaManager.onLoad
gibi). CAF'de etkinlik işleyiciler, etkinlik dinleyicileri (CastReceiverContext.addEventListener
)
ve mesaj algılayıcıları (PlayerManager.setMessageInterceptor
) tarafından değiştirilir.
Web Alıcısı'nın bir etkinlik için birden fazla etkinlik dinleyicisi (dinleyici
etkinliği etkilemez) ve ileti başına bir alıcı olabilir. Araya giren kişi isteği güncelleyebilir ya da yerine getirebilir (değiştirilen bir isteği, başarı mesajını veya hata mesajını döndürme) ve sözü veren eşzamansız bir işleyici olabilir.
Yükleme isteğine müdahale yapan kullanıcı, uygulamaya özel mantık eklemenin en yaygın yoludur. Yük gönderen, bir gönderenden gelen yükleme isteklerinde içerik kimliğini içerik URL'sine dönüştürebilir. Önceden yükleme veya ön önbellek için açık bir müdahale sağlayan bir veri sağlanmazsa yükleme önleyici, ön yükleme ve ön önbellek istekleri için de çağrılır.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
Ayrıca v2 özelleştirilmiş medya durumu işleyicisinin yerini medya durumu mesajı için bir mesaj alma aracı alır. Medya durumundaki medya URL'sini açığa çıkarmak istemeyen Web Alıcı uygulamaları, bir yükleme isteğinin medya URL'sini sağlayan bir URL çözümleyici (PlayerManager.setMediaUrlResolver
) sağlayabilir. Bu URL, CAF tarafından dahili olarak kullanılır ve medya durumunda sağlanmaz.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
Etkinlikler
Web Alıcısı, hem CastReceiverContext
hem de PlayerManager
kaynaklı birçok etkinlik sağlar.
Web Alıcısı uygulamaları herhangi bir etkinlikte birden çok dinleyiciye sahip olabilir. Ayrıca, birden fazla etkinlik için bir dinleyici sağlayabilir. (Bazı etkinlik grupları için cast.framework.events.category
bölümüne bakın.)
Etkinlikler tüm kullanıcı isteklerini, oynatma ilerleme durumunu, oynatıcı işlemeyi ve alt düzey medya öğesi etkinliklerini kapsar (CAF, medya öğesinin kendisini açığa çıkarmaz).
Web Alıcısı uygulaması, işlem gerçekleştirmek için (örneğin, yükleme tamamlandığında metin parçaları tanımı ekleme) veya analiz için etkinlik işleyiciler ekleyebilir.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
Özel mesaj otobüsü
CAF, API'de mesaj veri yolunu kullanıma sunmaz. Bunun yerine, belirli bir ad alanı için mesaj işleyici eklemek üzere CastReceiverContext.addCustomMessageListener
, ad alanı başına mesaj göndermek için CastReceiverContext.sendCustomMessage
sağlar. Web Alıcısı'nı başlatmadan önce (yani, CastReceiverContext.start
çağırmadan önce) tüm ad alanlarının bildirilmesi gerekir. Ad alanları, bunlara bir mesaj dinleyici ekleyerek belirtilebilir veya CastReceiverOptions.customNamespaces
içinde başlangıç seçeneği olarak sunulabilir.
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
Varsayılan kullanıcı arayüzü
CAF, oynatma ilerleme çubuğu ve medya meta verilerini gerektiği şekilde görüntüleyen varsayılan bir Web Alıcı kullanıcı arayüzü sağlar. Varsayılan kullanıcı arayüzü, CSS benzeri bir stil ile ayarlanabilen özel bir öğe (<cast-media-player>
) olarak sağlanır.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
Web Alıcısı uygulaması, daha fazla özelleştirme için kendi kullanıcı arayüzünü uygulayabilir. Web Alıcısı, kullanıcı arayüzü nesnesini Web Alıcısı oynatma durumuna bağlamaya yardımcı olmak için cast.framework.ui.PlayerDataBinder
sınıfını sağlar.