Os eventos fornecem insights sobre o que está acontecendo no seu app, como ações do usuário, eventos do sistema ou erros.
O Google Analytics registra alguns eventos automaticamente. 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 se consegue acessar o Analytics, conforme descrito em Introdução ao Analytics para 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 quando usar esses eventos e acessar mais informações sobre eles, 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 que é útil para coletar a métrica principal de um evento do Analytics. Exemplos incluem receita, distância, tempo e pontos.
Caso seu app tenha necessidades específicas que um tipo de evento sugerido do Analytics não cobre, 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
É possível ver estatísticas agregadas sobre os seus eventos do Analytics nos painéis do Firebase console. 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 do Firebase:
- No Console do Firebase, abra seu projeto.
- No menu, selecione Analytics para visualizar o painel de relatórios do 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.