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

Fluxo de permissões de acesso à rede local

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:

O fluxo com o Cast está indisponível

Atualizar seu app

  1. 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-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 é o receiverID, que é o mesmo ID definido no GCKDiscoveryCriteria.

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

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

    Recomendamos que você personalize a mensagem mostrada no prompt 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 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ê 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.plist do app para incluir uma descrição de uso da rede local.
  • Adicione NSBonjourServices ao Info.plist do 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.