Diretrizes para aplicativos de cerca geográfica
Siga estas práticas recomendadas para cerca geográfica em seu aplicativo.
APIs importantes
Recomendações
Se o app precisar de acesso à Internet quando ocorrer um evento de cerca geográfica, verifique se há acesso à Internet antes de criar a cerca geográfica.
- Se o aplicativo não tiver acesso à Internet no momento, você poderá solicitar que o usuário se conecte à Internet antes de configurar a cerca geográfica.
- Se o acesso à Internet não for possível, evite consumir a energia necessária para as verificações de localização de geofencing.
Garanta a relevância das notificações de cerca geográfica verificando o carimbo de data/hora e a localização atual quando um evento de cerca geográfica indicar alterações em um estado Inserido ou Encerrado. Consulte Verificando o carimbo de data/hora e a localização atual abaixo para obter mais informações.
Crie exceções para gerenciar casos em que um dispositivo não pode acessar informações de localização e notifique o usuário, se necessário. As informações de localização podem estar indisponíveis porque as permissões estão desativadas, o dispositivo não contém um rádio GPS, o sinal de GPS está bloqueado ou o sinal de Wi-Fi não é forte o suficiente.
Em geral, não é necessário escutar eventos de cerca geográfica em primeiro plano e em segundo plano ao mesmo tempo. No entanto, se o app precisar escutar eventos de cerca geográfica em primeiro plano e em segundo plano:
- Chame o método ReadReports para descobrir se ocorreu um evento.
- Cancele o registro do ouvinte de eventos em primeiro plano quando o aplicativo não estiver visível para o usuário e registre-o novamente quando ele se tornar visível novamente.
Consulte Ouvintes em segundo plano e em primeiro plano para obter exemplos de código e mais informações.
Não use mais de 1000 cercas geográficas por aplicativo. Na verdade, o sistema suporta milhares de cercas geográficas por aplicativo, você pode manter um bom desempenho do aplicativo para ajudar a reduzir o uso de memória do aplicativo usando não mais que 1000.
Não crie uma cerca geográfica com um raio menor que 50 metros. Se o app precisar usar uma cerca geográfica com um raio pequeno, aconselhe os usuários a usá-lo em um dispositivo com um rádio GPS para garantir o melhor desempenho.
Diretrizes de uso adicionais
Verificando o carimbo de data/hora e a localização atual
Quando um evento indicar uma alteração para um estado Inserido ou Encerrado, verifique o carimbo de data/hora do evento e sua localização atual. Vários fatores, como o sistema não ter recursos suficientes para iniciar uma tarefa em segundo plano, o usuário não perceber a notificação ou o dispositivo estar em espera, podem afetar quando o evento é realmente processado pelo usuário. Por exemplo, a seguinte sequência pode ocorrer:
- Seu aplicativo cria uma cerca geográfica e monitora a cerca geográfica para eventos de entrada e saída.
- O usuário move o dispositivo para dentro da cerca geográfica, fazendo com que um evento enter seja acionado.
- Seu aplicativo envia uma notificação ao usuário de que ele agora está dentro da cerca geográfica.
- O usuário estava ocupado e não percebe a notificação até 10 minutos depois.
- Durante esse atraso de 10 minutos, o usuário voltou para fora da cerca geográfica.
A partir do carimbo de data/hora, você pode dizer que a ação ocorreu no passado. No local atual, você pode ver que o usuário agora está de volta fora da cerca geográfica. Dependendo da funcionalidade do seu aplicativo, talvez você queira filtrar esse evento.
Ouvintes em segundo plano e em primeiro plano
Em geral, seu aplicativo não precisa escutar eventos de cerca geográfica em primeiro plano e em uma tarefa em segundo plano ao mesmo tempo. O método mais limpo para lidar com um caso em que você pode precisar de ambos é permitir que a tarefa em segundo plano manipule as notificações. Se você configurar ouvintes de cerca geográfica em primeiro plano e em segundo plano, não haverá garantia de qual será disparado primeiro e, portanto, você sempre deverá chamar o método ReadReports para descobrir se um evento ocorreu.
Se você configurou ouvintes de cerca geográfica em primeiro plano e em segundo plano, cancele o registro do ouvinte de eventos em primeiro plano sempre que o aplicativo não estiver visível para o usuário e registre novamente o aplicativo quando ele se tornar visível novamente. Aqui está um código de exemplo que se registra para o evento de visibilidade.
Windows.UI.Core.CoreWindow coreWindow;
// This needs to be set before InitializeComponent sets up event registration for app visibility
coreWindow = CoreWindow.GetForCurrentThread();
coreWindow.VisibilityChanged += OnVisibilityChanged;
Quando a visibilidade for alterada, você poderá habilitar ou desabilitar os manipuladores de eventos em primeiro plano, conforme mostrado aqui.
private void OnVisibilityChanged(CoreWindow sender, VisibilityChangedEventArgs args)
{
// NOTE: After the app is no longer visible on the screen and before the app is suspended
// you might want your app to use toast notification for any geofence activity.
// By registering for VisibiltyChanged the app is notified when the app is no longer visible in the foreground.
if (args.Visible)
{
// register for foreground events
GeofenceMonitor.Current.GeofenceStateChanged += OnGeofenceStateChanged;
GeofenceMonitor.Current.StatusChanged += OnGeofenceStatusChanged;
}
else
{
// unregister foreground events (let background capture events)
GeofenceMonitor.Current.GeofenceStateChanged -= OnGeofenceStateChanged;
GeofenceMonitor.Current.StatusChanged -= OnGeofenceStatusChanged;
}
}
Dimensionando suas cercas geográficas
Embora o GPS possa fornecer as informações de localização mais precisas, o geofencing também pode usar Wi-Fi ou outros sensores de localização para determinar a posição atual do usuário. Mas o uso desses outros métodos pode afetar o tamanho das cercas geográficas que você pode criar. Se o nível de precisão for baixo, a criação de pequenas cercas geográficas não será útil. Em geral, é recomendável que você não crie uma cerca geográfica com um raio menor que 50 metros. Além disso, as tarefas em segundo plano de cerca geográfica são executadas apenas periodicamente no Windows; se você usar uma cerca geográfica pequena, existe a possibilidade de perder totalmente um evento Enter ou Exit.
Se o app precisar usar uma cerca geográfica com um raio pequeno, aconselhe os usuários a usá-lo em um dispositivo com um rádio GPS para garantir o melhor desempenho.