Permissões e descoberta do iOS

A partir do iOS 14, o sistema operacional aplicará novas restrições e permissões que afetam a experiência do usuário do Google Cast. Isso também afeta como você crie o SDK do Cast no seu app. Para que seu 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 nas permissões.

iOS 14

Os desenvolvedores precisam atualizar os apps de transmissão do iOS para o SDK do Google Cast v4.6.0 ou mais recente. Essas versões são compatíveis com o iOS 14 e os requisitos dele.

A partir do iOS 14, os aplicativos que verificam dispositivos na rede local agora solicita que os usuários com uma caixa de diálogo de permissões únicas encontrem e se conectem dispositivos de rede local. A plataforma de transmissão 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á cast.

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 deixar 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 a dispositivos de rede local estiver desativado.

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

O SDK do Cast para iOS v4.6.0 ou mais recente pode ser baixado com CocoaPods da seguinte forma: configuração do CocoaPods ou manualmente, seguindo a configuração manual. Esta versão inclui mudanças no mecanismo de descoberta subjacente para permitir apps que estão criado com o Xcode 12 para encontrar dispositivos de transmissão na rede. O botão Transmitir precisa agora serão sempre exibidos. Se nenhum dispositivo estiver disponível quando o usuário tocar no botão "Transmitir" será exibida uma caixa de diálogo com orientações sobre por que os dispositivos podem não ser disponíveis, incluindo informações sobre como reativar o acesso à rede local permissão.

Mudanças no SDK do Cast

Primeira transmissão

Na primeira vez que um usuário tentar transmitir, um endereço de e-mail de acesso à rede local (LNA, na sigla em inglês) uma caixa de diálogo intersticial será exibida explicando por que o acesso à rede local necessárias, seguidas pelas permissões de acesso à rede local do iOS fornecidas pela Apple prompt de comando. Os modelos abaixo ilustram o fluxo:

Fluxo de permissões de acesso à rede local

Transmissão indisponível

A partir do SDK remetente do iOS 4.6.0, o botão Transmitir sempre aparece quando o usuário 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 fornece ao usuário dicas sobre os possíveis motivos da indisponibilidade do Cast, como mostrado nos modelos abaixo:

Fluxo com transmissão indisponível

Como atualizar seu app no iOS 14

  1. Adicionar o SDK do Cast para iOS 4.8.3 ao projeto

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

    Caso contrário, extrair o SDK manualmente.

  2. Adicione NSBonjourServices ao seu Info.plist

    Especifique NSBonjourServices no seu Info.plist para permitem que a descoberta de rede local funcione no iOS 14.

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

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

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

    &lt;key&gt;NSBonjourServices&lt;/key&gt;
    &lt;array&gt;
      &lt;string&gt;_googlecast._tcp&lt;/string&gt;
      &lt;string&gt;_ABCD1234._googlecast._tcp&lt;/string&gt;
    &lt;/array&gt;
  3. Adicione NSLocalNetworkUsageDescription à sua Info.plist

    Recomendamos que você personalize a mensagem exibida no campo Solicitação de rede adicionando uma string de permissão específica ao comando Info.plist para o NSLocalNetworkUsageDescription, como para descrever o Cast descoberta e outros serviços de descoberta, como DIAL.

    &lt;key&gt;NSLocalNetworkUsageDescription&lt;/key&gt;
    O <string>${PRODUCT_NAME} usa a rede local para descobrir dispositivos compatíveis com Cast no seu Wi-Fi
    rede.</string>

    Essa mensagem aparecerá como parte da caixa de diálogo "Acesso à rede local do iOS" como mostrados na simulação.

    Imagem da caixa de diálogo &quot;Transmitir permissões de acesso à rede local&quot;
  4. Lançar seu app novamente na App Store da Apple

    Recomendamos também lançar o app novamente usando a versão 4.8.3 assim que possível.

Personalizações

Início da descoberta do dispositivo de transmissão

Por padrão, a descoberta do dispositivo de transmissão é iniciada na primeira vez que o usuário toca nela. o botão Transmitir (GCKUICastButton). Se esta é a primeira vez que o usuário tentou usar o app Google Cast na rede local depois de fazer upgrade para o iOS 14, o novo intersticial de LNA vai aparecer, seguido pela rede local do iOS Caixa de diálogo de permissões de acesso.

Uma nova flag está disponível para permitir que você controle quando a descoberta do dispositivo começa e o comportamento de certos elementos da experiência do usuário:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

O valor padrão é true. Esta sinalização só é aplicável quando GCKCastOptions::disableDiscoveryAutostart é definido como false.

Se definida como true, a descoberta do dispositivo de transmissão começará quando o usuário tocar no GCKUICastButton pela primeira vez. Será exibida uma mensagem informativa exibido ao usuário, informando por que a permissão de rede local está necessários. Depois dessa mensagem, a mensagem LNA do iOS 14 será exibida. A descoberta do dispositivo de transmissão começa depois que a mensagem é confirmada.

Nas inicializações de app subsequentes, GCKUICastButton sempre é mostrado.

Se definida como false, a descoberta de dispositivos será iniciada com base no valor do sinalizar GCKCastOptions::disableDiscoveryAutostart.

Perguntas frequentes

O que acontece se eu lançar novamente meu App remetente do Google Cast com o SDK do Cast v4.4.8 e Xcode 12?

Talvez seu app não consiga detectar dispositivos de transmissão na rede local a menos que você tenha recebido um direito de multicast de rede da Apple. Observe que a Apple não concederá direitos multicast somente para os para oferecer suporte ao Google Cast. Se você planeja criar com o Xcode 12, lance seu app com o Cast 4.6.0.

Se eu lançar meu app novamente com o novo SDK do Cast, qual Os usuários do iOS 13 ou anterior vão ter a experiência?

Eles ainda terão a mesma experiência do usuário que tinham antes um novo lançamento do seu app. As mudanças visíveis aos usuários são limitadas aos usuários em execução no iOS 14.

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

  • Atualizar o Info.plist do app para incluir uma rede local descrição de uso.
  • Adicione NSBonjourServices ao Info.plist e forneça os nomes dos serviços Bonjour para Cast e o ID do app.
  • Faça upgrade do app remetente para usar o SDK do Cast 4.6.0.
  • Lance o app novamente na App Store da Apple.

Por que os dispositivos pararam de aparecer no meu dispositivo personalizado? depois de atualizar para a versão 4.6.0?

Esse é um problema conhecido que pode acontecer se você estiver usando um dispositivo personalizado em vez do seletor de dispositivo padrão. Na versão 4.4.8 SDK do Cast e versões anteriores, a verificação do dispositivo 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.

Essa mudança se deve ao fato de que o provedor de acesso à rede local (LNA, na sigla em inglês) a solicitação de permissões vai aparecer após a verificação do primeiro app tempo de resposta. Isso pode fazer com que caixas de diálogo de permissões apareçam em lugares aleatórios no seu app.

Os desenvolvedores que criarem um seletor de dispositivos personalizado para o app vão deverá fornecer um anúncio intersticial único antes de iniciar o dispositivo verificação pela primeira vez no iOS 14.

iOS 13

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

A partir do SDK do Google Cast v4.4.3, está disponível um SDK adicional que não não necessitam de permissão para o Bluetooth®. Isso está disponível tanto na página do Google Developers site e no novo google-cast-sdk-no-bluetooth Cocoapods.

Detalhamento do app

Veja um detalhamento, dependendo da versão do SDK do iOS que você está usando usando:

Apps criados com o SDK do iOS 12 ou anterior

  • Ação recomendada. O desempenho de descoberta de dispositivos pode diminuir em execução no iOS 13, mas ainda funciona. É altamente recomendável os desenvolvedores a atualizar para o SDK do Cast v4.4.4 quando disponível.
  • O iOS 13 solicitará que os usuários concedam permissões do 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 Transmitir pode não ser compatível aparecem se o usuário não conceder permissão de localização. Como fazer upgrade para o SDK do Cast 4.4.4 é necessário para garantir uma experiência de transmissão confiável no iOS 13.