Permissões e descoberta do iOS

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 na rede local. A plataforma Cast usa a rede local para descobrir e controlar dispositivos Cast. Portanto, se o usuário negar a permissão, não será possível transmitir.

Para melhorar a experiência do usuário, estamos fazendo algumas modificações na UX do SDK para os apps que usam o seletor de dispositivos 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, além de 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 Cast 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 vai aparecer com orientações sobre 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 da solicitação de permissões de acesso à rede local do iOS fornecida pela Apple. As simulações abaixo ilustram o fluxo:

Fluxo de permissões de acesso à rede local

O Cast não está disponível

A partir do SDK remetente do 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 não estão disponíveis, tocar no botão "Transmitir" abre uma caixa de diálogo que dá ao usuário dicas sobre possíveis motivos para a indisponibilidade, conforme mostrado nas simulações abaixo:

Fluxo com Cast indisponível

Atualizar seu app

  1. Adicione o SDK do Cast para iOS 4.8.6 ao seu projeto

    Se você estiver usando o Gerenciador de pacotes do Swift, atualize o pacote google-cast-ios-sdk para a versão 4.8.6.

    Caso contrário, extraia o SDK manualmente.

  2. Adicionar NSBonjourServices ao seu Info.plist

    Especifique NSBonjourServices no seu Info.plist para permitir que a descoberta de rede local seja bem-sucedida.

    Você precisa adicionar _googlecast._tcp e _<your-app-id>._googlecast._tcp como serviços para que a descoberta de dispositivos funcione corretamente.

    O appID é seu receiverID, que é o mesmo ID definido no GCKDiscoveryCriteria.

    Atualize o exemplo de definição NSBonjourServices e substitua "ABCD1234" pelo seu appID.

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. Adicionar NSLocalNetworkUsageDescription ao seu Info.plist

    Recomendamos personalizar a mensagem mostrada na solicitação de rede local adicionando uma string de permissão específica do app no arquivo Info.plist do app para o NSLocalNetworkUsageDescription, como para descrever a descoberta do Cast e outros serviços de descoberta, como o DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    Essa mensagem vai aparecer como parte da caixa de diálogo de acesso à rede local do iOS, conforme mostrado no modelo.

    Imagem da caixa de diálogo de permissões de acesso à rede local do Google Cast
  4. Relançar o app na App Store da Apple

    Recomendamos que você relance seu app usando a versão 4.8.6 o mais rápido possível.

Personalizações

Início da descoberta de dispositivos de transmissão

Por padrão, a descoberta de dispositivos Cast é iniciada na primeira vez que o usuário toca no botão Transmitir (GCKUICastButton). Se esta for a primeira vez que o usuário tenta usar o app Cast na rede local, o novo intersticial de acesso à rede local vai aparecer, seguido pela caixa de diálogo de permissões de acesso à rede local do iOS.

Uma nova flag está disponível para controlar 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 será iniciada quando um usuário tocar no GCKUICastButton pela primeira vez. Uma mensagem informativa será mostrada ao usuário para explicar por que a permissão de rede local é necessária. Depois dessa mensagem, a mensagem da LNA do iOS será exibida. A descoberta de dispositivos de transmissão começa depois que a mensagem é confirmada.

Nos lançamentos subsequentes do app, o GCKUICastButton sempre aparece.

Se definido como false, a descoberta de dispositivos vai começar com base no valor da flag GCKCastOptions::disableDiscoveryAutostart.

Perguntas frequentes

O que acontece se eu relançar meu app remetente do Cast com o SDK do Cast v4.4.8 e o Xcode 12?

Seu app não poderá descobrir dispositivos Cast na rede local, a menos que você tenha recebido um direito 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 o 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.plist do app para incluir uma descrição do uso da rede local.
  • Adicione NSBonjourServices ao Info.plist do app e forneça os nomes de serviço 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 seu app na App Store da Apple.

Por que os dispositivos pararam de aparecer no seletor de dispositivos personalizados 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 dispositivos personalizado em vez do 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, será 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 verificação. Isso pode resultar em caixas de diálogo de permissões aparecendo em lugares aleatórios no seu app.

Os desenvolvedores que criarem um seletor de dispositivos personalizado para o app precisarão fornecer um anúncio intersticial único antes de iniciar a verificação de dispositivos pela primeira vez.