Os eventos apresentam insights sobre o que está acontecendo no app, como ações do usuário, eventos do sistema ou erros.
O Google Analytics registra automaticamente alguns eventos para você. Não é necessário adicionar códigos para recebê-los. Caso o app precise coletar outros dados, é possível registrar até 500 tipos diferentes de eventos do Analytics no app. Não há limite para o volume total de eventos registrados pelo app. Como os nomes de eventos diferenciam letras maiúsculas e minúsculas, registrar dois eventos com nomes que diferem apenas no uso de caixa baixa/alta vai resultar na criação de dois eventos distintos.
Antes de começar
Verifique se você configurou seu projeto e pode acessar o Analytics, conforme descrito em Primeiros passos com o Analytics em C++.
Registrar eventos
Depois de inicializar o módulo firebase::analytics
, será possível usá-lo para registrar
eventos com o método LogEvent()
.
Para ajudar você a começar, o SDK do Analytics define vários eventos recomendados, comuns entre diferentes tipos de apps, como os de varejo, e-commerce, viagem e jogos. Para saber mais sobre esses eventos e quando usá-los, consulte os artigos de Eventos e propriedades na Central de Ajuda do Firebase.
Encontre detalhes de implementação dos eventos recomendados nos seguintes locais:
- Eventos sugeridos: veja a lista de constantes de
Event
. - Parâmetros prescritos: veja a lista de constantes de
Parameters
.
Veja no exemplo a seguir como registrar um evento
SELECT_CONTENT
sugerido:
const analytics::Parameter kSelectContentParameters[] = { analytics::Parameter(analytics::kParameterItemID , id), analytics::Parameter(analytics::kParameterItemName, "name"), analytics::Parameter(analytics::kUserPropertySignUpMethod, "Google"), analytics::Parameter("favorite_food", mFavoriteFood), analytics::Parameter("user_id", mUserId), }; analytics::LogEvent( analytics::kEventSelectContent, kSelectContentParameters, sizeof(kSelectContentParameters) / sizeof(kSelectContentParameters[0]));
Além dos prescritos, é possível adicionar os seguintes parâmetros a qualquer evento:
Parâmetros personalizados: não são representados diretamente no seu relatório do Analytics, mas podem ser usados como filtros nas definições de Público que podem ser aplicadas a todos os relatórios. Os parâmetros personalizados também serão incluídos nos dados exportados para o BigQuery, caso o app esteja vinculado a um projeto dessa ferramenta.
Parâmetro
VALUE
:VALUE
é um parâmetro de uso geral útil para coletar uma métrica principal pertencente a um evento do Analytics. Exemplos incluem receita, distância, tempo e pontos.
Caso seu aplicativo tenha necessidades específicas não cobertas por um tipo de evento sugerido do Analytics, registre seus próprios eventos personalizados do Analytics, conforme mostrado neste exemplo:
// Copyright 2016 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "firebase/analytics.h" #include "firebase/analytics/event_names.h" #include "firebase/analytics/parameter_names.h" #include "firebase/analytics/user_property_names.h" #include "firebase/app.h" // Thin OS abstraction layer. #include "main.h" // NOLINT // Execute all methods of the C++ Analytics API. extern "C" int common_main(int argc, const char* argv[]) { namespace analytics = ::firebase::analytics; ::firebase::App* app; LogMessage("Initialize the Analytics library"); #if defined(__ANDROID__) app = ::firebase::App::Create(GetJniEnv(), GetActivity()); #else app = ::firebase::App::Create(); #endif // defined(__ANDROID__) LogMessage("Created the firebase app %x", static_cast<int>(reinterpret_cast<intptr_t>(app))); analytics::Initialize(*app); LogMessage("Initialized the firebase analytics API"); LogMessage("Enabling data collection."); analytics::SetAnalyticsCollectionEnabled(true); // App session times out after 30 minutes. // If the app is placed in the background and returns to the foreground after // the timeout is expired analytics will log a new session. analytics::SetSessionTimeoutDuration(1000 * 60 * 30); LogMessage("Get App Instance ID..."); auto future_result = analytics::GetAnalyticsInstanceId(); while (future_result.status() == firebase::kFutureStatusPending) { if (ProcessEvents(1000)) break; } if (future_result.status() == firebase::kFutureStatusComplete) { LogMessage("Analytics Instance ID %s", future_result.result()->c_str()); } else { LogMessage("ERROR: Failed to fetch Analytics Instance ID %s (%d)", future_result.error_message(), future_result.error()); } LogMessage("Set user properties."); // Set the user's sign up method. analytics::SetUserProperty(analytics::kUserPropertySignUpMethod, "Google"); // Set the user ID. analytics::SetUserId("uber_user_510"); LogMessage("Log current screen."); // Log the user's current screen. analytics::LogEvent(analytics::kEventScreenView, "Firebase Analytics C++ testapp", "testapp" ); // Log an event with no parameters. LogMessage("Log login event."); analytics::LogEvent(analytics::kEventLogin); // Log an event with a floating point parameter. LogMessage("Log progress event."); analytics::LogEvent("progress", "percent", 0.4f); // Log an event with an integer parameter. LogMessage("Log post score event."); analytics::LogEvent(analytics::kEventPostScore, analytics::kParameterScore, 42); // Log an event with a string parameter. LogMessage("Log group join event."); analytics::LogEvent(analytics::kEventJoinGroup, analytics::kParameterGroupID, "spoon_welders"); // Log an event with multiple parameters. LogMessage("Log level up event."); { const analytics::Parameter kLevelUpParameters[] = { analytics::Parameter(analytics::kParameterLevel, 5), analytics::Parameter(analytics::kParameterCharacter, "mrspoon"), analytics::Parameter("hit_accuracy", 3.14f), }; analytics::LogEvent( analytics::kEventLevelUp, kLevelUpParameters, sizeof(kLevelUpParameters) / sizeof(kLevelUpParameters[0])); } LogMessage("Complete"); // Wait until the user wants to quit the app. while (!ProcessEvents(1000)) { } analytics::Terminate(); delete app; LogMessage("Shutdown"); return 0; }
Visualizar eventos no registro de depuração do Android Studio
É possível ativar o registro detalhado para conferir se o SDK está registrando adequadamente os eventos. Isso inclui os eventos registrados manual e automaticamente.
Ative o registro detalhado com uma série de comandos adb:
adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC
Esse comando exibe seus eventos no logcat do Android Studio, permitindo a verificação imediata do envio dos eventos.
Visualizar eventos do Analytics no painel
Você pode encontrar estatísticas agregadas sobre os eventos do Analytics nos painéis de controle do Console do Firebase. Eles são atualizados periodicamente ao longo do dia. Para fazer testes imediatos, use a saída do logcat conforme descrito na seção anterior.
Para acessar esses dados no console Firebase:
- Abra o projeto no console de Firebase.
- Selecione Analytics no menu para acessar o painel de relatórios Analytics.
A guia Eventos mostra os relatórios de eventos criados automaticamente para cada tipo distinto de evento do Analytics registrado pelo seu aplicativo. Leia mais sobre o painel.