Os veículos dependem cada vez mais da conectividade para gerenciar a crescente lista de casos de uso solicitados por OEMs e proprietários de veículos, resultando em um aumento na pegada de dados e nos custos associados. Use o recurso Per-Application Network Selection (PANS) para rotear o tráfego de aplicativos específicos 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 recursos de rede PANS que mudam dinamicamente.
- Coleta métricas de suporte.
- Fornece um aplicativo de referência.
Por que PANS?
PANS pode:
- 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 para o usuário rastreiam o uso de dados de aplicativo para rede para redes gerenciadas OEM.
- O acesso à rede é seguro e não pode ser abusado por casos de uso não intencional ou aplicativos não autorizados.
- As alterações nos mapeamentos de aplicativo para rede do PANS são comunicadas aos usuários.
- A mesma configuração de rede é aplicada a todos os usuários.
Principais vantagens
A PANS oferece 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 de rede de aplicativos especificados pode ser fornecido sem 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 de segurança, como mapas, assistente (condução com viva-voz) e atualizações do sistema continuam a funcionar mesmo quando o usuário não tem plano de dados.
- O 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 no nível do aplicativo.
Figura 1 . estrutura PANS
Implementando PANS
Para implementar o PANS, uma nova API ConnectivityManager
, setOemNetworkPreference
, é fornecida. Essa 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
OemNetworkPreference
OemNetworkPreference
é uma abstração sobre 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
resultará na seguinte prioridade de redes padrão atribuídas a um aplicativo: use uma rede UNMETERED
primeiro, se UNMETERED
não estiver disponível, use uma rede OEM_PAID
e, se OEM_PAID
não estiver disponível, use o sistema rede padrão.
-
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;
Chamando 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 ouvir 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, lembre-se dos seguintes pontos:
- As preferências de rede não são mantidas nas inicializações e precisarão ser reaplicadas em cada inicialização.
- Para criar uma preferência por um aplicativo, ele não precisa ser instalado. Portanto, as preferências de rede para aplicativos desinstalados podem ser definidas proativamente.
- 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. Essa é 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 apenas fazer uma operação em uma rede ilimitada, o PANS não o forçará a usar outra rede.
Configurando uma rede
Uma rede com os recursos OEM_PAID
ou OEM_PRIVATE
deve estar disponível ao usar uma preferência de rede correspondente. O Android fornece suporte para a 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);
Restringindo o acesso a redes PANS
Marcar uma rede com os recursos OEM_PAID
ou OEM_PRIVATE
marca essa rede como uma rede restrita . As 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 as 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 optar por fazê-lo.
Revendo 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.
- Limpar uma política.
- Aplique uma política na inicialização.
- Use a API de distração do motorista (consulte Diretrizes de distração do motorista ).
- Atualize dinamicamente o Wi-Fi com
OEM_PAID
eOEM_PRIVATE
.
Figura 3. Aplicativo de referência
Métricas
Para facilitar a transparência em relação ao uso de dados, métricas são coletadas e disponibilizadas em relação à 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 usando a rede errada (sem conectividade de rede) ou excesso de dados. Para habilitar resoluções rápidas:
-
dumpsys
de conectividade inclui uma lista de redes padrão ativas por aplicativo e seus aplicativos associados (mapeados do PANS). - Netd
dumpsys
inclui IP UID 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.