Os aplicativos que procuram dispositivos na rede local agora vão mostrar aos usuários uma caixa de diálogo de permissões única para encontrar e se conectar a dispositivos da rede local. A plataforma Cast usa a rede local para descobrir e controlar dispositivos de transmissão. Portanto, se o usuário negar a permissão, ele não poderá transmitir.
Para melhorar a experiência do usuário, estamos fazendo algumas modificações de UX no SDK para os apps que usam o seletor de dispositivo padrão. Essas modificações na UX deixam mais claro para os usuários por que as permissões de acesso à rede local são necessárias e como ativar a transmissão se o acesso ao dispositivo de rede local tiver sido desativado.
O SDK do Cast para iOS v4.6.0 ou mais recente pode ser adicionado com o Swift Package Manager seguindo a configuração do Swift Package Manager ou baixado manualmente seguindo a configuração manual. Esta versão inclui mudanças no mecanismo de descoberta para permitir que apps criados com o Xcode 12 encontrem dispositivos de transmissão na rede. O botão Transmitir agora vai aparecer sempre. Se nenhum dispositivo estiver disponível quando o usuário tocar no botão Transmitir, uma caixa de diálogo será exibida explicando por que os dispositivos podem não estar disponíveis, incluindo informações sobre como reativar a permissão de acesso à rede local.
Mudanças no SDK do Cast
Primeira transmissão
Na primeira vez que um usuário tentar transmitir, uma caixa de diálogo intersticial de acesso à rede local (LNA, na sigla em inglês) vai aparecer explicando por que o acesso à rede local é necessário, seguida pela solicitação de permissões de acesso à rede local do iOS fornecida pela Apple. Os modelos abaixo ilustram o fluxo:

Transmissão indisponível
A partir do SDK do remetente para iOS 4.6.0, o botão Transmitir sempre aparece quando o usuário está conectado ao Wi-Fi. Quando os dispositivos de transmissão estão indisponíveis, tocar no botão Transmitir abre uma caixa de diálogo que dá ao usuário dicas sobre os possíveis motivos para a indisponibilidade, como mostrado nas simulações abaixo:

Atualizar seu app
-
Adicionar o SDK do Cast para iOS 4.8.6 ao seu projeto
Se estiver usando o Gerenciador de pacotes do Swift, atualize o pacote
google-cast-ios-sdkpara a versão 4.8.6.Caso contrário, extraia o SDK manualmente.
-
Adicionar
NSBonjourServicesao seuInfo.plistEspecifique
NSBonjourServicesno seuInfo.plistpara permitir que a descoberta de rede local seja bem-sucedida.Você precisa adicionar
_googlecast._tcpe_<your-app-id>._googlecast._tcpcomo serviços para que a descoberta de dispositivos funcione corretamente.O appID é o receiverID, que é o mesmo ID definido no
GCKDiscoveryCriteria.Atualize a seguinte definição de exemplo de
NSBonjourServicese substitua "ABCD1234" pelo seu appID. -
Adicione
NSLocalNetworkUsageDescriptionao seuInfo.plistRecomendamos que você personalize a mensagem mostrada no prompt de rede local adicionando uma string de permissão específica do app no arquivo
Info.plistdo app para oNSLocalNetworkUsageDescription, como para descrever a descoberta do Cast e outros serviços de descoberta, como DIAL.Essa mensagem vai aparecer como parte da caixa de diálogo de acesso à rede local do iOS, conforme mostrado no modelo.
-
Relançar o app na App Store da Apple
Recomendamos que você também lance novamente seu app usando a versão 4.8.6 assim que possível.
Personalizações
Início da descoberta de dispositivos de transmissão
Por padrão, a descoberta de dispositivos de transmissão é iniciada na primeira vez que o usuário toca
no botão Transmitir (GCKUICastButton). Se essa for a primeira vez que o usuário
tenta usar o app de transmissão na rede local,
o novo intersticial de LNA vai aparecer, seguido pela caixa de diálogo de permissões de acesso à rede local
do iOS.
Uma nova flag está disponível para permitir que você controle quando a descoberta de dispositivos começa e o comportamento de determinados elementos da UX:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
O valor padrão é true. Essa flag só é aplicável quando a flag
GCKCastOptions::disableDiscoveryAutostart
está definida como false.
Se definido como true, a descoberta de dispositivos de transmissão vai começar quando um usuário tocar no
GCKUICastButton pela primeira vez. Uma mensagem informativa será
exibida ao usuário informando por que a permissão de rede local é
necessária. Depois, a mensagem do LNA do iOS vai aparecer.
A descoberta de dispositivos de transmissão começa depois que a mensagem é confirmada.
Nas inicializações subsequentes do app, GCKUICastButton sempre é exibido.
Se definido como false, a descoberta de dispositivos vai começar com base no valor da
flag
GCKCastOptions::disableDiscoveryAutostart.
Perguntas frequentes
O que vai acontecer se eu lançar novamente meu app remetente do Cast com o SDK do Cast v4.4.8 e o Xcode 12?
Seu app pode não conseguir descobrir dispositivos de transmissão na rede local, a menos que você tenha recebido uma autorização de multicast de rede da Apple. A Apple não vai conceder direitos de multicast apenas para oferecer suporte ao Cast. Se você planeja criar com o Xcode 12, lance seu app com o Cast 4.6.0.
O que preciso fazer para atualizar meu app quando a nova versão do SDK do Cast for lançada?
- Atualize o
Info.plistdo app para incluir uma descrição de uso da rede local. - Adicione
NSBonjourServicesaoInfo.plistdo seu app e forneça os nomes de serviço do Bonjour para o Cast e o ID do app. - Faça upgrade do app remetente para usar o SDK do Cast 4.6.0.
- Relance o app na app store da Apple.
Por que os dispositivos pararam de aparecer no meu seletor de dispositivos personalizado depois que fiz upgrade para a versão 4.6.0?
Esse é um problema conhecido que pode acontecer se você estiver usando um seletor de dispositivo personalizado em vez do seletor padrão. Na versão 4.4.8 do
SDK do Cast e anteriores, a verificação de dispositivos era automática. A partir da versão
4.6.0, é necessário chamar explicitamente o método startDiscovery
na classe
GCKDiscoveryManager para iniciar a descoberta de dispositivos.
O motivo dessa mudança é que o aviso de permissões de acesso à rede local (LNA) vai aparecer depois que o app fizer a primeira leitura. Isso pode fazer com que as caixas de diálogo de permissões apareçam em lugares aleatórios no app.
Os desenvolvedores que criarem um seletor de dispositivos personalizado para o app precisarão fornecer um intersticial único antes de iniciar a verificação de dispositivos pela primeira vez.