Je teste la nouvelle Firebase optimisée par Google et j'ai mis en place des notifications à distance et des rapports de plantage. Je rencontre cependant d'énormes problèmes pour faire fonctionner Analytics.
Je surveille les événements avec FIRAnalytics.logEventWithName(...)
et enregistre les propriétés de l'utilisateur avec FIRAnalytics.setUserPropertyString(...)
. Cependant, peu importe ce que je fais, aucune donnée n'apparaît dans la console Firebase Analytics.
Eh bien, je reçois certains événements, mais ceux-ci ne sont pas envoyés par moi (comme first_open et session_start). De plus, ces données semblent tomber après très longtemps.
De plus, lorsque je surveille des événements et enregistre des données utilisateur, je reçois ce qui suit:
Upload task scheduled to be executed in approx. (s): 3102.294599890709
Cela semble vraiment étrange - Firebase attend près d'une heure avant d'essayer d'envoyer le prochain lot de données doit être un bug, ou est-il configurable? Lorsque j'ai attendu ce délai extrêmement long, des données ont été envoyées ... mais ne s'affichent pas.
Les événements Firebase sont regroupés par lots et téléchargés toutes les heures afin d'éviter une décharge excessive de la batterie sur les appareils. Sur iOS, lorsque vous mettez en arrière-plan l'application avant la cible de téléchargement d'une heure, les événements seront envoyés à ce moment-là en arrière-plan.
Vous pouvez activer la journalisation du débogage pour iOS ( https://firebase.google.com/docs/analytics/ios/events#view_events_in_the_xcode_debug_console ) pour voir quand les événements sont téléchargés dans la console de débogage.
Une fois les événements téléchargés, il y a un délai d'environ 3 heures avant que les données n'apparaissent dans le tableau de bord Firebase Analytics. De plus, la plage de jours par défaut exclut "aujourd'hui", vous ne voyez donc que les événements d'hier. Vous pouvez changer le sélecteur de date pour inclure Aujourd'hui si vous souhaitez voir les derniers événements.
La principale raison de retarder le téléchargement des données par lots est d'économiser la batterie. Chaque fois que le réseau est utilisé, le modem du réseau mobile de l'appareil est mis en mode haute puissance et reste dans ce mode pendant un certain temps. Si le réseau est utilisé régulièrement, il a un impact important sur la durée de vie de la batterie. En regroupant les téléchargements et en retardant le téléchargement, l'impact sur la batterie est considérablement réduit.
Dans Swift cela devrait être comme:
FIRAnalytics.logEvent(withName: "SignUp", parameters: ["user_id": userid, "user_name": username])
Pour afficher cet événement dans Firebase:
Pour afficher cet événement dans Xcode:
-FIRAnalyticsDebugEnabled
Notez que -FIRAnalyticsDebugEnabled a seulement [~ # ~] un [~ # ~] tiret devant lui.
Si vous ne recevez pas d'événements dans la console, c'est peut-être parce que vous ne respectez pas la convention de dénomination, comme je l'ai constaté s'il y a un espace dans le nom de l'événement, il n'apparaîtra jamais dans la console comme suit:
mFirebaseAnalytics.logEvent("Add Camera", bundle);
Mais lorsque vous supprimez l'espace comme suit:
mFirebaseAnalytics.logEvent("Add_Camera", bundle);
Vous verrez maintenant les événements dans la console, après environ 3 heures. L'application enverra les données sur la console dans les cas suivants:
1- Data is more than an hours old
2- App goes into the background
Vous pouvez regarder ce tutoriel pour plus d'informations: Premiers pas avec Firebase Analytics sur iOS: événements - Firecasts
Application React-Native (IOS/Android)
J'ai eu le même problème, debugView ne fonctionnait pas, et streamView glitches plusieurs fois, le meilleur moyen que j'ai trouvé pour tester mes événements était de se connecter avec ma createPageEvent()
puis
l'important est de mettre l'application en arrière-plan après avoir enregistré les événements , ils apparaîtront presque en temps réel sur les événements firebase ou dans streamView (vérifier - cet article pour voir quand les événements sont envoyés à firebase)
les événements ne sont envoyés qu'après 1 heure depuis qu'ils ont été enregistrés ou immédiatement si vous mettez votre application en arrière-plan.
import firebase, { RNFirebase } from 'react-native-firebase';
export default class AnalyticsService {
static async initialize() {
firebase.analytics().setAnalyticsCollectionEnabled(true);
}
static async createPageEvent(screen: string) {
firebase.analytics().setCurrentScreen(screen)
firebase.analytics().logEvent(`open_${screen}`)
}
}
le résultat est ceci dans streamView presque en temps réel ->
Vous pouvez maintenant commencer à créer des entonnoirs et autres
Une autre chose à vérifier est de vous assurer que vos entrées de journalisation dans les arguments passés au lancement sont correctes. Ils devraient commencer par un tiret, par exemple
-FIRAnalyticsDebugEnabled
et pas
FIRAnalyticsDebugEnabled
L'autre jour, j'ai perdu une heure à me demander pourquoi rien n'est enregistré.
first_open
, session_start
sont répertoriés par Firebase comme événements collectés automatiquement .
Je ne peux pas vous aider avec le retard extrême de la tâche de téléchargement que vous rencontrez sur vos événements personnalisés .. mais Firebase Analytics a moins d'une semaine et ce n'est peut-être qu'un bug de leur côté.
J'ai trouvé cette question StackOverflow qui mentionne les mêmes lignes de débogage mais liées à Google App Measurement ou à l'ancien SDK Google Mobile Analytics.
Sachez également que la console Firebase n'affichera pas les événements en temps réel ( source ):
Vous pouvez afficher des statistiques agrégées sur vos événements dans les tableaux de bord de la console Firebase. Ces tableaux de bord sont mis à jour périodiquement tout au long de la journée . Pour un test immédiat, utilisez la sortie logcat comme décrit dans la section précédente.
Juste une note simple ici: selon cette petite vidéo https://www.youtube.com/watch?v=5pYdTgSkW5E après avoir joué avec votre simulateur , vous devez appuyez sur le bouton d'accueil du Xcode, sinon les données ne seront pas envoyées au serveur.
Le problème le plus courant auquel la plupart des gens sont confrontés est que la base de feu ne consigne pas les événements même si tout fonctionne parfaitement. C'est ce que j'ai trouvé dans la documentation
Si vous devez désactiver définitivement la collection Analytics dans une version de votre application, définissez FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
Dans le fichier Info.plist de votre application. La définition de FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
A priorité sur toutes les valeurs de FIREBASE_ANALYTICS_COLLECTION_ENABLED
Dans le Info.plist
De votre application ainsi que sur toutes les valeurs définies avec setAnalyticsCollectionEnabled.
Pour réactiver la collecte, supprimez FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
De votre Info.plist
. Définir FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
Sur NO
n'a aucun effet et entraîne le même comportement que de ne pas avoir FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
Défini dans votre Info.plist file
.
Vous devez donc supprimer FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
De votre fichier google-servicesinfo.plist
Pour que l'analyse fonctionne.