Events in Analytics are missing In the dashboard /Big query
- Ngôn ngữ chính
- TypeScript
- Star
- 7.8k
- Fork
- 2.2k
- Merge trung bình
- 22 giờ 28 phút
- Pull request đã merge (30 ngày)
- 6
Mô tả
Version info
Angular: 14
Firebase: 9.X.X
AngularFire: 7.4.1
Other (e.g. Ionic/Cordova, Node, browser, operating system): chrome, phones, Edge, safari
How to reproduce these conditions: trying to upload app
Steps to set up and reproduce: X
Sample data and security rules: X
Debug output
** In the debugger, I also notice the term 'undefined.' I'm not sure if this is related. Here's a snippet of what I see in the debugger:
js?l=dataLayer&id=G-XXXX:296 Sending event "event_name" to undefined
js?l=dataLayer&id=G-XXXX:296 Request parameters:
js?l=dataLayer&id=G-XXXX:296 en: event_name
js?l=dataLayer&id=G-XXXX:296 ep.origin: firebase
js?l=dataLayer&id=G-XXXX:296 ep.some_id: 12123124
js?l=dataLayer&id=G-XXXXX:296 ep.some_name: Name 123 Name
js?l=dataLayer&id=G-XXXX:296 Sending request: https://www.google-analytics.com/g/collect?v=2&tid=G-.......
**
** Output from firebase.database().enableLogging(true); ** X
** Screenshots ** - X
Expected behavior
I have an Angular application integrated with Firebase, and the data is exported to BigQuery.
In my Angular app, there is a requirement to send an event to analytics upon loading. However, I've noticed that only 80-90% of other events(in other application) are being tracked, even for the same user and the same device/platform, and there are no ad blockers in use.
I have attempted to use async/await to ensure that the event is sent reliably. Is this approach appropriate? Does the code appear to be correct? Is there a way to ensure that the event will always be sent?
Could it be beneficial to send another event elsewhere? Is there a potential issue with the data itself?
Is there something that can be improved in the analytics configuration itself?
When using the Analytics Debugger Chrome extension, I can see the events, but testing with external users is challenging.
My goal is to get 100%of the events
Actual behavior
component
this.test$ = this.data$.pipe(map((data) => data.test));
this.test$.subscribe(async (test) => {
const analyticsEvent: AnalyticsEventData = {
some_id: string,
some_id2: string
some_name: string,
some_id: string,
some_date: firebase-timestampObject.toMillis(),
app_name: 'string',
};
this.analyticsService.data = analyticsEvent;
await this.analyticsService.custonlogEvent('event_name');
await this.analyticsService.setUserProperties(analyticsEvent);
});
any my analytics service
import { Injectable } from '@angular/core';
import { AngularFireAnalytics } from '@angular/fire/compat/analytics';
@Injectable({
providedIn: 'root',
})
export class AnalyticsService {
constructor(private analytics: AngularFireAnalytics) {}
private _data:AnalyticsEventData;
get data() {
return this._data;
}
set data(value) {
this._data = value;
}
async customlogEvent(eventName: string, params?: { [key: string]: any }) {
try {
if (!this._data) throw new Error('error');
const generalParameters = this._data;
const paramsObject = {
...generalParameters,
...params,
};
await this.analytics.logEvent(eventName, paramsObject);
} catch (e) {
console.log(e);
}
return true;
}
async setUserProperties(params: { [key: string]: any }) {
return await this.analytics.setUserProperties(params);
}
}
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với subscription của Angular component và AnalyticsService.customlogEvent, sau đó kiểm tra các lệnh gọi đến AngularFireAnalytics.logEvent và setUserProperties. Tái hiện các event bị thiếu đã được báo cáo và so sánh đầu ra của debugger với các event được export sang BigQuery; hoàn thành khi đã xác định được nguyên nhân của các event bị thiếu và mọi giới hạn về độ tin cậy được hỗ trợ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- angular, firebase, typescript
- Lĩnh vực
- analytics, frontend
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 25/100