Os veículos dependem cada vez mais da conectividade para gerir a lista crescente de casos de utilização solicitados tanto pelos OEM como pelos proprietários dos veículos, resultando num aumento da pegada de dados e dos custos associados. Use o recurso de seleção de rede por aplicativo (PANS) para rotear o tráfego de aplicativos especificados em redes pagas pelo OEM.
Com o PANS, você pode gerenciar o volume e o custo do uso de dados e, ao mesmo tempo, fornecer uma experiência de carro robusta, segura e conectada. PANELAS:
- Consiste em uma nova API adicionada ao
ConnectivityManager
disponível apenas para dispositivos automotivos. - Fornece uma API de sugestão de Wi-Fi atualizada (consulte API de sugestão de Wi-Fi para conectividade com a Internet ) para incluir suporte para alteração dinâmica dos recursos da rede PANS.
- Coleta métricas de suporte.
- Fornece um aplicativo de referência.
Por que PANS?
PANELAS podem:
- Atualize dinamicamente os mapeamentos de aplicativo para rede.
- Gerencie o roteamento no nível do aplicativo sem fazer alterações nos aplicativos.
- Somente aplicativos permitidos por OEM podem acessar as redes OEM mapeadas.
- Os desenvolvedores de aplicativos não precisam fazer alterações para implementar esse recurso.
- As métricas voltadas ao usuário rastreiam o uso de dados do aplicativo para a rede em redes gerenciadas por OEM.
- O acesso à rede é seguro e não pode ser abusado por meio de casos de uso não intencionais ou aplicativos não autorizados.
- As alterações nos mapeamentos de aplicativo para rede PANS são comunicadas aos usuários.
- A mesma configuração de rede é aplicada a todos os usuários.
Principais vantagens
PANS fornece aos OEMs estas vantagens principais:
- Os OEMs podem pagar pelo tráfego de rede em vez dos usuários:
- As atualizações do sistema podem ser fornecidas sem nenhum custo para o usuário.
- O uso da rede de aplicativos específicos pode ser fornecido sem nenhum custo para o usuário.
- A telemetria e outras análises podem ser gerenciadas sem nenhum custo para o usuário.
- Os OEMs podem garantir que aplicativos críticos permaneçam conectados mesmo sem um plano de dados pago pelo usuário. Por exemplo, recursos críticos para a segurança, como mapas, assistente (direção com viva-voz) e atualizações do sistema, continuam funcionando mesmo quando o usuário não possui um plano de dados.
- PANS fornece granularidade adicional de controle específico para roteamento de tráfego de rede no Android. Por exemplo, os OEMs podem definir de maneira ideal uma topologia de rede lógica para o roteamento do tráfego em nível de aplicativo.
Figura 1 . Estrutura PANS
Implementar PANS
Para implementar o PANS, é fornecida uma nova API ConnectivityManager
, setOemNetworkPreference
. Esta nova API mapeia aplicativos para um OemNetworkPreference
. Esta API está disponível apenas para dispositivos automotivos e é anotada como @SystemApi
com uma nova permissão signature
.
Figura 2. Implementar PANS
OEMNetworkPreferência
OemNetworkPreference
é uma abstração de aplicativos de mapeamento OEM_PAID
e OEM_PRIVATE
NetworkCapabilities
por nome de pacote para uma preferência de rede . As preferências de rede permitem hierarquias de rede. Por exemplo, mapear um aplicativo para a preferência OEM_NETWORK_PREFERENCE_OEM_PAID
resulta na seguinte prioridade de redes padrão atribuídas a um aplicativo: use primeiro uma rede UNMETERED
, se UNMETERED
não estiver disponível, use uma rede OEM_PAID
e se OEM_PAID
não estiver disponível, use o padrão do sistema rede.
-
OEM_PAID
Usado principalmente para aplicativos que podem ser roteados em redes OEM e não OEM. -
OEM_PRIVATE
Usado principalmente para aplicativos OEM para obter acesso a uma rede dedicada a eles.
/** * If an unmetered network is available, use it. * Otherwise, if a network with the OEM_PAID capability is available, use it. * Otherwise, use the general default network. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1; /** * If an unmetered network is available, use it. * Otherwise, if a network with the OEM_PAID capability is available, use it. * Otherwise, the app doesn't get a default network. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2; /** * Use only NET_CAPABILITY_OEM_PAID networks. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3; /** * Use only NET_CAPABILITY_OEM_PRIVATE networks. */ public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;
Chame APIs PANS
Para usar APIs PANS:
- Use
OemNetworkPreferences
para mapear um aplicativo para uma preferência de rede. - Chame
setOemNetworkPreference
com o objetoOemNetworkPreferences
. - Use a interface
Runnable
para escutar a conclusão da API.
Por exemplo:
// Mapping three packages to two network preferences // Packages have a 1:1 mapping to network preferences OemNetworkPreferences pref = new OemNetworkPreferences.Builder() .addNetworkPreference("first.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID) .addNetworkPreference("second.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID) .addNetworkPreference("third.package.name", OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY) .build(); myConnectivityManager.setOemNetworkPreference(pref, myExecutor, myListener);
Considerações
Ao implementar o PANS, tenha em mente os seguintes pontos:
- As preferências de rede não persistem nas inicializações e precisam ser reaplicadas em cada inicialização.
- Para criar uma preferência para um aplicativo, ele não precisa ser instalado. Portanto, as preferências de rede para aplicativos desinstalados podem ser definidas de forma proativa.
- A qualquer momento, um aplicativo só pode ser mapeado para uma única preferência de rede.
- As preferências de rede são usadas para definir a rede padrão de um aplicativo. Esta é a rede usada quando um aplicativo não especificou quais redes deseja usar por meio de uma das APIs especializadas. Isso não apenas cobre a grande maioria das necessidades de conectividade, mas também permite o uso contínuo de APIs especializadas, como a API
NetworkRequest
, para não interromper os casos de uso de aplicativos existentes. Por exemplo, quando um aplicativo deseja realizar apenas uma operação em uma rede ilimitada, o PANS não o forçará a usar outra rede.
Configurar uma rede
Uma rede com recursos OEM_PAID
ou OEM_PRIVATE
deve estar disponível ao usar uma preferência de rede correspondente. O Android fornece suporte para configuração de recursos para redes Ethernet e Wi-Fi. Para redes Ethernet, você pode usar uma sobreposição de recursos, config_ethernet_interfaces
. Isso é definido em tempo de compilação.
Para Wi-Fi, a API WifiNetworkSuggestion
pode ser usada com as novas APIs do Android 12, setOemPaid(Boolean)
e setOemPrivate(Boolean)
. Isso pode ser alterado em tempo de execução.
Considere estes exemplos:
- Uma sobreposição de recursos chamada
config_ethernet_interfaces
especifica:- O nome da interface a ser configurada.
- Os valores
NetworkCapabilities
desejados.<!-- 11 NET_CAPABILITY_NOT_METERED 12 NET_CAPABILITY_INTERNET 14 NET_CAPABILITY_TRUSTED 15 NET_CAPABILITY_NOT_VPN 22 NET_CAPABILITY_OEM_PAID || 26 NET_CAPABILITY_OEM_PRIVATE --> <string-array translatable="false" name="config_ethernet_interfaces"> <item>eth0;11,12,14,15,22;;</item></string-array>
- Esta
WiFiNetworkSuggestion
pode ser alterada dinamicamente:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
Restringir o acesso às redes PANS
Marcar uma rede com os recursos OEM_PAID
ou OEM_PRIVATE
marca essa rede como uma rede restrita . Redes restritas só podem ser usadas por aplicativos que tenham a permissão CONNECTIVITY_USE_RESTRICTED_NETWORKS
, que é controlada por OEMs.
Os aplicativos com essa permissão podem usar redes restritas , desde que os aplicativos solicitem explicitamente . No entanto, esses aplicativos não terão redes restritas como padrão. Os aplicativos mapeados por meio do PANS podem ter redes OEM restritas definidas como padrão e não precisarão da permissão de rede restrita para usá-los. Quando tal aplicativo tem uma rede OEM restrita atribuída como sua rede padrão pelo PANS, ele também tem a capacidade de solicitar explicitamente a referida rede OEM se o aplicativo decidir fazê-lo.
Revise o aplicativo de referência
Um aplicativo de referência (incluindo código) chamado NetworkPreferenceApp
é fornecido em compilações automotivas de depuração do usuário e demonstra como:
- Consumir métricas PANS.
- Defina a política PANS.
- Defina uma política padrão para o dispositivo.
- Limpe uma política.
- Aplique uma política na inicialização.
- Use a API Driver Distraction (consulte Diretrizes sobre distração do driver ).
- Atualize o Wi-Fi dinamicamente com
OEM_PAID
eOEM_PRIVATE
.
Figura 3. Aplicativo de referência
Métricas
Para facilitar a transparência em torno do uso de dados, são coletadas e disponibilizadas métricas relacionadas à quantidade de dados transmitidos pelos mapeamentos de rede OEM_PAID
e OEM_PRIVATE
.
Solução de problemas
A maioria das condições de solução de problemas surge de um aplicativo que usa a rede errada (sem conectividade de rede) ou de excesso de dados. Para ativar resoluções rápidas:
-
dumpsys
de conectividade inclui uma lista de redes padrão ativas por aplicativo e seus aplicativos associados (mapeados de PANS). - Netd
dumpsys
inclui UID IP e regras de firewall. - Netstats
dumpsys
inclui métricas PANS por aplicativo. Por exemplo, quais aplicativos usaram qual rede OEM.
Todos os dados dumpsys
estão disponíveis criando um relatório de bug do Android.