Permissões e descoberta do iOS

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 Cast. Isso também vai afetar a forma como você cria o SDK do Cast no seu app. Para que ele mantenha a funcionalidade do Cast com as versões mais recentes do iOS, é necessário fazer atualizações para lidar com essas mudanças de permissões.

iOS 14

Os desenvolvedores precisam atualizar os apps remetentes do iOS Cast 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 procuram dispositivos na rede local agora vão mostrar aos usuários uma caixa de diálogo de permissões únicas para encontrar e se conectar a dispositivos da 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 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.

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

O SDK do Cast para iOS v4.6.0 ou mais recente pode ser baixado com o CocoaPods seguindo a configuração do CocoaPods ou 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) 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. Os simulacros 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 do Cast 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, como mostrado nas simulações abaixo:

Fluxo com Cast indisponível

Atualizar seu app no iOS 14

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

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

    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 concluída no iOS 14.

    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 a definição de exemplo 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 que você personalize 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 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 na simulação.

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

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

Personalizações

Início da descoberta de dispositivos com Cast

Por padrão, a descoberta de dispositivos Cast é iniciada quando o usuário toca no botão Cast (GCKUICastButton) pela primeira vez. Se esta for a primeira vez que o usuário tenta usar o app Cast na rede local depois de fazer upgrade para o iOS 14, 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 com Cast será iniciada quando um usuário tocar no GCKUICastButton pela primeira vez. Uma mensagem informativa será mostrada ao usuário para informar por que a permissão de rede local é necessária. Depois dessa mensagem, a mensagem LNA do iOS 14 será exibida. A descoberta de dispositivos de transmissão começa depois que a mensagem é confirmada.

Nos próximos lançamentos do app, GCKUICastButton sempre vai aparecer.

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 seu app com o Cast 4.6.0.

Se eu relançar meu app com o novo SDK do Cast, qual será a experiência dos usuários que usam o iOS 13 ou versões anteriores?

A experiência do usuário vai continuar a mesma que ele tinha antes do relançamento do app. As mudanças visíveis para o usuário são limitadas a quem usa o iOS 14.

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 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 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, 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) aparece depois que o app faz 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 no iOS 14.

iOS 13

Com o iOS 13, foram introduzidos novos requisitos de permissões que afetam apps que usam o SDK do Google Cast.

A partir do SDK do Google Cast v4.4.3, um SDK adicional está disponível e não exige permissão do Bluetooth®. Isso está disponível no site para desenvolvedores e no novo google-cast-sdk-no-bluetooth Cocoapods.

Detalhamento do app

Confira uma análise detalhada dependendo da versão do SDK do iOS que você está usando:

Apps criados com o SDK do iOS 12 ou versões anteriores

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

Apps criados com o SDK do iOS 13

  • Ação necessária: atualize para o SDK do Cast 4.4.4 ou o botão de transmissão poderá não aparecer se o usuário não conceder permissão de local. É necessário fazer upgrade para o SDK do Cast 4.4.4 para garantir uma experiência de transmissão confiável no iOS 13.