Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
O Visual Studio App Center foi desativado em 31 de março de 2025, exceto para os recursos de Análise e Diagnóstico, que continuarão a ter suporte até 30 de junho de 2026. Mais informações.
O App Center Analytics ajuda você a entender o comportamento do usuário e o envolvimento do cliente para melhorar seu aplicativo. O SDK captura automaticamente a contagem de sessões e as propriedades do dispositivo, como modelo, versão do sistema operacional, etc. Você pode definir seus próprios eventos personalizados para medir coisas que são importantes para você. Todas as informações capturadas estão disponíveis no portal do App Center para você analisar os dados.
Observação
O país e o nome da operadora não estão disponíveis no App Center Analytics para macOS, mas você pode definir o país da operadora com a localização do dispositivo.
Observação
Alterações significativas foram introduzidas na versão do 4.0.0 App Center. Siga a seção Migrar para o SDK do App Center 4.0.0 e superior para migrar o App Center de versões anteriores.
Siga a seção Introdução se ainda não configurou o SDK em seu aplicativo.
Informações da sessão e do dispositivo
Depois de adicionar o App Center Analytics ao seu aplicativo e iniciar o SDK, ele rastreará automaticamente as sessões e as propriedades do dispositivo, incluindo a versão do sistema operacional, o modelo e assim por diante, sem qualquer código adicional.
Observação
Em aplicativos Mac Catalyst, a quantidade de sessões pode ser menor do que em aplicativos iOS. Os eventos do ciclo de vida usados para rastrear sessões no Mac Catalyst se comportam de forma diferente daqueles no iOS.
O SDK informa automaticamente o código de país de um usuário se o dispositivo tiver um modem de dados móvel e um cartão SIM instalado. Os dispositivos somente WiFi não relatam um código de país por padrão. Para definir o código de país desses usuários, você mesmo deve recuperar a localização do usuário e usar o setCountryCode: método no SDK. Nosso conselho é estar atento ao rastreamento de locais de usuários e usar uma resolução de localização baixa. O exemplo abaixo usa kCLLocationAccuracyKilometer.
- Certifique-se de que ativa os Serviços de Localização no dispositivo.
- Obtenha a localização atual do dispositivo usando
CLLocationManager. - Converta a localização num código de país ISO usando
CLGeocoder. - Substitua o código de país da operadora usando o método
setCountryCodedo SDK.
Use o seguinte código para obter a localização do dispositivo e substituir o código de país da operadora no aplicativo:
Adicione o protocolo CLLocationManagerDelegate ao AppDelegate e adicione a propriedade locationManager:
@interface AppDelegate () <CLLocationManagerDelegate>
@property(nonatomic) CLLocationManager *locationManager;
@end
class AppDelegate: CLLocationManagerDelegate {
private var locationManager: CLLocationManager = CLLocationManager()
}
No método didFinishLaunchingWithOptions: configure o gerenciador de localização:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
[self.locationManager requestWhenInUseAuthorization];
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer
self.locationManager.requestWhenInUseAuthorization()
Observação
O requestWhenInUseAuthorization método não está disponível para macOS. Remova chamadas para esse método ao desenvolver para macOS.
Adicione os métodos delegados:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[manager requestLocation];
}
}
- (void)locationManger:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
CLLocation *location = [locations lastObject];
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location
completionHandler:^(NSArray *placemarks, NSError *error) {
if (placemarks.count == 0 || error)
return;
CLPlacemark *pm = [placemarks firstObject];
[MSACAppCenter setCountryCode:pm.ISOcountryCode];
}]
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"Failed to find user's location: \(error.localizedDescription)");
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
manager.requestLocation()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation:CLLocation = locations[0] as CLLocation
CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) in
if error == nil {
AppCenter.countryCode = placemarks?.first?.isoCountryCode
}
}
}
func locationManager(_ Manager: CLLocationManager, didFailWithError error: Error) {
print("Failed to find user's location: \(error.localizedDescription)")
}
Eventos personalizados
Você pode acompanhar seus próprios eventos personalizados com até 20 propriedades para saber o que está acontecendo em seu aplicativo, entender as ações do usuário e ver as agregações no portal do App Center.
Depois de iniciar o SDK, use o trackEvent:withProperties método para monitorizar os seus eventos com propriedades. Você pode enviar até 200 nomes de eventos distintos. Além disso, há um limite máximo de 256 caracteres por nome de evento e 125 caracteres por nome de propriedade de evento e valor de propriedade de evento.
NSDictionary *properties = @{@"Category" : @"Music", @"FileName" : @"favorite.avi"};
[MSACAnalytics trackEvent:@"Video clicked" withProperties: properties];
Analytics.trackEvent("Video clicked", withProperties: ["Category" : "Music", "FileName" : "favorite.avi"])
As propriedades dos eventos são totalmente opcionais – se você quiser apenas acompanhar um evento, use este exemplo:
[MSACAnalytics trackEvent:@"Video clicked"];
Analytics.trackEvent("Video clicked")
Prioridade e persistência do evento
Você pode acompanhar eventos críticos para os negócios que têm maior importância do que outros eventos.
- Os desenvolvedores podem definir a prioridade dos eventos como Normal (
FlagsNormalna API) ou Crítica (FlagsCriticalna API). - Os eventos com prioridade definida como Crítica serão recuperados do armazenamento primeiro e enviados antes dos eventos Normais .
- Quando o armazenamento local está cheio e novos eventos precisam ser armazenados. Os eventos mais antigos com a prioridade mais baixa são excluídos primeiro para abrir espaço para os novos.
- Se o armazenamento estiver cheio de logs com prioridade Crítica , o rastreamento de um evento com prioridade Normal falhará, pois o SDK não poderá abrir espaço nesse caso.
- Se você também usar o serviço Falhas, os logs de falhas serão definidos como Críticos e compartilharão o mesmo armazenamento que os eventos.
- O intervalo de transmissão só é aplicado a eventos Normais , os eventos Críticos serão enviados após 3 segundos.
Você pode usar a seguinte API para rastrear um evento como Crítico:
NSDictionary *properties = @{@"Category" : @"Music", @"FileName" : @"favorite.avi"};
[MSACAnalytics trackEvent:@"Video clicked" withProperties:properties flags:MSACFlagsCritical];
// If you're using name only, you can pass nil as properties.
let properties = ["Category" : "Music", "FileName" : "favorite.avi"];
Analytics.trackEvent("Video clicked", withProperties: properties, flags: .critical)
// If you're using name only, you can pass nil as properties.
Pausar e retomar o envio de logs
Pausar a transmissão de eventos pode ser útil em cenários em que o aplicativo precisa controlar a largura de banda da rede para necessidades mais críticas de negócios. Você pode pausar o envio de logs para o back-end do App Center. Quando pausados, os eventos ainda podem ser rastreados e salvos, mas não são enviados imediatamente. Quaisquer eventos que a sua aplicação registe enquanto pausada só serão enviados quando chamar resume.
[MSACAnalytics pause];
[MSACAnalytics resume];
Analytics.pause()
Analytics.resume()
Habilitar ou desabilitar o App Center Analytics em tempo de execução
Você pode ativar e desativar o App Center Analytics em tempo de execução. Se você desativá-lo, o SDK não coletará mais informações de análise para o aplicativo.
[MSACAnalytics setEnabled:NO];
Analytics.enabled = false
Para habilitar o App Center Analytics novamente, use a mesma API, mas passe YES/true como parâmetro.
[MSACAnalytics setEnabled:YES];
Analytics.enabled = true
O estado é persistido no armazenamento do dispositivo em todas as inicializações de aplicativos.
Observação
Este método só deve ser utilizado depois de Analytics ter sido iniciado.
Verifique se o App Center Analytics está ativado
Você também pode verificar se o App Center Analytics está habilitado ou não.
[MSACAnalytics isEnabled];
Analytics.enabled
Observação
Este método só deve ser usado depois de Analytics ter sido iniciado, ele sempre retornará NO ou false antes de começar.
Gerenciar sessão de início
Por padrão, o ID da sessão depende do ciclo de vida do aplicativo. Se você quiser controlar o início de uma nova sessão manualmente, siga as próximas etapas:
Observação
Preste atenção que cada chamada da API Analytics.StartSession() gerará uma nova sessão. Se no modo de rastreador de sessão manual essa API não for chamada, todos os logs de envio terão um valor de sessão nulo.
Observação
Preste atenção que, após o lançamento de um novo aplicativo, o ID da sessão será regenerado.
- Chame o seguinte método antes do início do SDK:
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
- Em seguida, você pode usar a
startSessionAPI após oAppCenter.start:
[MSACAnalytics startSession];
Analytics.startSession()
Tamanho do armazenamento local
Por padrão, o SDK armazena todos os logs de até 10 MB. Os desenvolvedores podem usar uma API para aumentar o tamanho do armazenamento e o SDK continuará armazenando logs até que o armazenamento esteja cheio.
Sem acesso à internet
Quando não há conectividade de rede, o SDK salva até 10 MB de logs no armazenamento local. Quando o armazenamento estiver cheio, o SDK começará a descartar logs antigos para abrir espaço para os novos logs. Quando a conectividade de rede retorna, o SDK envia logs em lotes de 50 ou a cada 6 segundos (por padrão).
Observação
Os logs com mais de 25 dias serão descartados.
Registo de eventos em lote
O SDK do App Center carrega logs em um lote de 50 e, se o SDK não tiver 50 logs para enviar, ele ainda enviará logs após 6 segundos (por padrão). Pode haver um máximo de três lotes enviados em paralelo. O intervalo de transmissão pode ser alterado:
// Change transmission interval to 10 seconds.
[MSACAnalytics setTransmissionInterval:10000];
// Change transmission interval to 10 seconds.
Analytics.transmissionInterval = 10000
O valor do intervalo de transmissão deve estar entre 6 segundos e 86400 segundos (um dia) e este método deve ser chamado antes do serviço ser iniciado.
Lógica de repetição e retrocesso
O SDK do App Center suporta novas tentativas de back-off em erros de rede recuperáveis. Abaixo está a lógica de reintentar:
- Três tentativas no máximo por solicitação.
- Cada solicitação tem sua própria máquina de estado de repetição.
- Todos os canais de transmissão são desativados (até o próximo processo do aplicativo) depois que uma solicitação esgota todas as suas tentativas.
Lógica de recuo
- 50% randomização, primeira tentativa entre 5 e 10 segundos, segunda tentativa entre 2,5 e 5 minutos, última tentativa entre 10 e 20 minutos.
- Se a rede mudar de desligado para ligado (ou de wi-fi para móvel), os estados de repetição serão redefinidos e as solicitações serão repetidas imediatamente.