Permissões e descoberta do iOS

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A partir do iOS 14, o sistema operacional vai aplicar novas restrições e permissões que afetam a experiência do usuário do Google Cast. Isso também afetará a forma como você cria o SDK do Cast no seu app. Para que o app mantenha a funcionalidade do Google Cast com as versões mais recentes do iOS, é necessário fazer atualizações para lidar com essas mudanças de permissão.

iOS 14

Os desenvolvedores precisam atualizar os apps remetentes de transmissão do iOS para o SDK do Google Cast v4.6.0 ou mais recente. Essas versões oferecem suporte ao iOS 14 e aos requisitos dele.

A partir do iOS 14, os aplicativos que verificam dispositivos na rede local agora solicitam aos usuários uma caixa de diálogo de permissões únicas para encontrar e se conectar a dispositivos de 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 de 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.

Os apps criados com versões do SDK do Cast usando a versão 4.4.8 ou anterior continuarão funcionando, desde que sejam criados com o Xcode 11.7 ou versões anteriores. Se você está criando para o iOS 14 com o Xcode 12 ou mais recente, recomendamos que atualize para o SDK do Cast v4.6.0 ou mais recente para garantir que o app Google Cast continue funcionando corretamente.

Faça o download do SDK do Cast para iOS v4.6.0 ou mais recente com o CocoaPods seguindo a configuração do CocoaPods ou manualmente com a configuração manual. Esta versão inclui mudanças no mecanismo de descoberta subjacente para permitir que apps criados com o Xcode 12 encontrem dispositivos de transmissão na rede. O botão Transmitir agora sempre será exibido. Se nenhum dispositivo estiver disponível quando o usuário tocar no botão "Transmitir", uma caixa de diálogo será exibida fornecendo 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 tenta transmitir, uma caixa de diálogo intersticial de acesso à rede local (LNA, na sigla em inglês) é exibida, explicando por que o acesso à rede local é necessário, seguido pelo prompt de permissões de acesso à rede local fornecido pelo iOS. Os modelos abaixo ilustram o fluxo:

Fluxo de permissões de acesso à rede local

Transmissão indisponível

A partir do SDK 4.6.0 do remetente do iOS, 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 mostra uma caixa de diálogo que dá ao usuário dicas sobre os possíveis motivos para a indisponibilidade do Google Cast, conforme mostrado na simulação abaixo.

Fluxo com transmissão indisponível

Como atualizar seu app no iOS 14

  1. Adicionar o SDK do Cast para iOS 4.7.0 ao seu projeto

    Se estiver usando o CocoaPods, use pod update para adicionar o SDK 4.7.0 ao seu projeto.

    Caso contrário, extraia o SDK manualmente.

  2. Adicionar NSBonjourServices a Info.plist

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

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

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

    Atualize a definição do exemplo NSBonjourServices a seguir e substitua "ABCD1234" pelo appID.

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

    É altamente recomendável que você personalize a mensagem mostrada na solicitação da rede local adicionando uma string de permissão específica do app no arquivo Info.plist do app para o NSLocalNetworkUsageDescription. Por exemplo, para descrever a descoberta de transmissões e outros serviços de descoberta, como o DIAL.

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} usa a rede local para descobrir dispositivos compatíveis com Cast na sua rede
    Wi-Fi.</string>

    Essa mensagem será exibida como parte da caixa de diálogo de acesso à rede local do iOS, conforme mostrado na simulação.

    Transmitir imagem de permissão de acesso à rede local
  4. Relançar seu aplicativo na Apple App Store

    Recomendamos também que você reinicie seu app usando a versão 4.7.0 o quanto antes.

Personalizações

Iniciação 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 esta for a primeira vez que o usuário tenta usar o app Google Cast na rede local após o upgrade para o iOS 14, o novo intersticial LNA será exibido, seguido da caixa de diálogo de permissões de acesso à rede local do iOS.

Uma nova sinalização está disponível para permitir que você controle quando a descoberta de dispositivos é iniciada e o comportamento de determinados elementos da UX:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

O valor padrão é true. Essa sinalização só é aplicável quando a sinalização GCKCastOptions::disableDiscoveryAutostart está definida como false.

Se for definido como true, a descoberta do dispositivo de transmissão será iniciada quando um usuário tocar em GCKUICastButton pela primeira vez. Uma mensagem informativa será exibida ao usuário informando por que a permissão de rede local é necessária. Depois disso, a mensagem LNA do iOS 14 será exibida. A descoberta de dispositivos de transmissão é iniciada depois que a mensagem é confirmada.

Nas próximas versões do app, GCKUICastButton sempre será exibido.

Se definido como false, a descoberta de dispositivos será iniciada com base no valor da sinalização GCKCastOptions::disableDiscoveryAutostart.

Perguntas frequentes

O que acontece se eu lançar o app de transmissão novamente usando o SDK do Cast v4.4.8 e o Xcode 12?

O app pode não conseguir descobrir dispositivos de transmissão na rede local, a menos que você tenha um direito de multicast da rede da Apple. Observe que a Apple não concederá direitos de multicast somente para fins de compatibilidade com o Google Cast. Se você planeja criar com o Xcode 12, lance seu app com o Cast 4.6.0.

Se eu lançar o app novamente com o novo SDK do Google Cast, o que meus usuários vão usar no iOS 13 ou em uma experiência anterior?

Eles continuarão vendo a mesma experiência do usuário que tinham antes do lançamento do app. As mudanças visíveis ao usuário são limitadas aos usuários no iOS 14.

O que preciso fazer para atualizar meu app depois do lançamento da nova versão do SDK do Cast?

  • Atualize o Info.plist do seu 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 de transmissão para usar o SDK do Cast 4.6.0.
  • Reinicialize seu aplicativo na App Store da Apple.

Por que os dispositivos não aparecem mais no meu seletor personalizado após o 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 de dispositivo padrão. Na versão 4.4.8 do SDK do Cast e anterior, a verificação do dispositivo era automática. A partir da versão 4.6.0, você precisará chamar explicitamente o método startDiscovery na classe GCKDiscoveryManager para iniciar a descoberta de dispositivos.

Isso acontece porque a solicitação de permissões de Acesso à rede local (LNA, na sigla em inglês) aparece depois que o app é verificado pela primeira vez. Isso pode fazer com que as caixas de diálogo de permissões apareçam em lugares aleatórios no app.

Os desenvolvedores que criam um seletor de dispositivo personalizado para o app precisam fornecer um intersticial único antes de iniciar a verificação do dispositivo pela primeira vez no iOS 14.

iOS 13;

Foram lançados novos requisitos de permissão no iOS 13, que afetam os apps que usam o SDK do Google Cast.

A partir do SDK do Google Cast v4.4.3, um SDK adicional está disponível sem a compatibilidade com o modo visitante que não requer permissão do Bluetooth®. Isso está disponível no site para desenvolvedores e no novo google-cast-sdk-no-bluetooth Cocoapods. Lembre-se de que o recurso modo visitante permite que o app remetente detecte dispositivos de transmissão dentro de uma proximidade física sem estar na mesma rede, usando um PIN exibido em dispositivos com o modo visitante ativado.

Para preparar o app para o iOS 13, você precisa decidir se:

Precisa manter o suporte ao modo visitante

  • É preciso adicionar a chave Privacy - Bluetooth Always Usage Description.
  • Adicione uma string para explicar o uso do Bluetooth® para os usuários ao Info.plist.

É necessário remover o suporte ao modo visitante

  • Impede que o app exija requisitos de transmissão por Bluetooth Bluetooth®.
  • Integre a versão mais recente do SDK do Google Cast sem suporte para Bluetooth®.
  • Isso está disponível no site para desenvolvedores e no novo google-cast-sdk-no-bluetooth Cocoapods.

Detalhamento de apps

Veja um detalhamento de acordo com a versão do SDK do iOS que você está usando:

Apps criados com o SDK do iOS 12 ou anterior

  • Ação recomendada. O desempenho da descoberta de dispositivos pode diminuir ao ser executado no iOS 13, mas ainda vai funcionar. É altamente recomendável que os desenvolvedores façam upgrade para o SDK do Cast v4.4.4, quando disponível.
  • O iOS 13 solicitará que os usuários concedam permissões Bluetooth® ao app.

Apps criados com o SDK do iOS 13

  • Ação necessária: a atualização para o SDK 4.4.4 do Google Cast ou o botão Transmitir pode não aparecer se o usuário não conceder permissão de localização. O upgrade para o SDK do Cast 4.4.4 é necessário para garantir uma experiência de transmissão confiável no iOS 13.
  • Consulte a documentação do desenvolvedor para ver mais informações sobre como integrar o modo visitante ou desativar esse modo com o SDK do Google Cast e sem suporte para Bluetooth®.