databuckets_event_tracker 1.2.2
databuckets_event_tracker: ^1.2.2 copied to clipboard
Event Tracker SDK
[Flutter] Databuckets Event Tracker SDK - Hướng dẫn sử dụng #
Hướng Dẫn Tích Hợp Flutter Databuckets Event Tracker SDK
1. Thiết lập & Cài đặt #
a. Thêm dependency #
Trong dự án Flutter của bạn, mở file pubspec.yaml
, thêm dòng sau:
dependencies:
flutter:
sdk: flutter
databuckets_event_tracker: 1.2.2
Sau đó, chạy lệnh:
flutter pub get
b. Cấu hình Firebase #
Vì SDK có hỗ trợ Firebase nên yêu cầu file your_app/android/app/google-services.json
trong quá trình build.
(Nếu không muốn hoặc chưa có Firebase thì SDK vẫn hoạt động bình thường, nhưng vẫn yêu cầu file google-services.json
)
Có thể sử dụng sample google-services.json
sau nếu chưa có Firebase:
{
"project_info": {
"project_number": "123456789012",
"project_id": "your-project-id",
"storage_bucket": "your-project-id.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:123456789012:android:abcdef123456",
"android_client_info": {
"package_name": "com.example.your_app"
}
},
"oauth_client": [
{
"client_id": "123456789012-abcdefg.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyD-EXAMPLEKEY1234567890"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}
c. Cấu hình Android #
your_app/android/app/build.gradle.kts
:
plugins {
id("com.google.gms.google-services")
}
your_app/android/build.gradle.kts
:
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle:8.2.2")
classpath("com.google.gms:google-services:4.4.1")
}
}
2. Khởi tạo SDK #
Trong hàm bắt đầu vòng đời của ứng dụng, hãy khởi tạo SDK:
final config = DatabucketsEventTrackerConfigBuilder(
apiKey: api_key,
baseUrl: base_url,
)
.setFlushThreshold(100) // Flush when 100 events are queued
.setMaxEventsStored(1000) // Store max 1000 events locally
.setFlushInterval(10000) // Flush every 10 seconds
.setMaxFlushSizeMB(1) // Max flush payload size 1MB
.setUserPseudoId('test-user-pseudo-id') // Tùy chọn, nếu không set sẽ tự động set user-pseudo-id theo Firebase
.build();
DatabucketsEventTracker.initialize(config);
Các Tham số khởi tạo #
Tham số | Mô tả | Giá trị mặc định |
---|---|---|
flushThreshold | Gửi events khi số events đạt đến ngưỡng này | 500 |
maxEventsStored | Số lượng event tối đa để lưu trữ | 5000 |
flushInterval | Khoảng thời gian gửi events định kỳ (ms) | 10000 (10 giây) |
maxFlushSize | Kích thước body request tối đa (MB) | 5 |
3. Class Event #
3.1. Constructor #
static Future<Event> create(String eventName) async {}
Ví dụ:
Event event = await Event.create("btn1-click-$count");
3.2. Default Params/Information #
Khi khởi tạo đối tượng Event, mặc định sẽ có các field sau:
Field | Explanation | Type | Example |
---|---|---|---|
event_date | Ngày xảy ra sự kiện (YYYYMMDD) | Number | 20250505 |
event_local_day_of_week | Thứ trong tuần theo múi giờ cục bộ | String | "1 - Monday" |
event_local_hour | Giờ trong ngày (0–23) | Number | 11 |
event_local_hour_minute | HHMM theo local time | Number | 1106 |
install_day | Ngày cài đặt app (YYYYMMDD) | Number | 20250415 |
retention_day | Số ngày kể từ khi cài đặt | Number | 20 |
first_open_time | Thời gian lần đầu mở app sau cài đặt | Number | 1746464412000 |
session_id | ID session (user_pseudo_id:timestamp ) |
String | "test-user-pseudo-id:1746417808764" |
session_progress | Số giây từ đầu session đến event | Number | 170 |
user_pseudo_id | ID ẩn danh user | String | "test-user-pseudo-id" |
geo.country | Mã quốc gia theo IP | String | "VN" |
geo.loc | Tọa độ (lat,long) | String | "xx.xxxx,xx.xxxx" |
geo.city | Thành phố | String | "Da Nang" |
geo.org | ISP / Tổ chức IP | String | "AS45903 CMC Telecom" |
geo.timezone | Múi giờ địa phương | String | "Asia/Ho_Chi_Minh" |
geo.postal | Mã bưu chính | String | "50250" |
geo.region | Vùng / tỉnh | String | "Da Nang" |
app_platform | Nền tảng | String | "ANDROID" |
app_store | Cửa hàng ứng dụng | String | "com.android.vending" |
app_version | Phiên bản app | String | "1.0" |
app_instance_id | Instance ID của app | String | "cecb8c87-927f-464c-83d9-1e6d8a44a93a" |
device.is_limited_ad_tracking_enabled | Giới hạn theo dõi quảng cáo | Boolean | false |
device.resettable_id | Advertising ID | String | "6b6d4c6f-7e72-401e-9e51-ad7da34cf40d" |
device.platform_version | Phiên bản OS | String | "16" |
device.user_default_language | Ngôn ngữ mặc định | String | "en-US" |
device.model | Model thiết bị | String | "sdk_gphone64_x86_64" |
device.timezone_offset_seconds | Offset UTC (giây) | Number | 25200 |
device.brand_name | Thương hiệu | String | "google" |
device.id | Hardware ID | String | "7a349ab563648412" |
device.category | Danh mục | String | "mobile" |
app_id | ID ứng dụng | String | "com.mockapplication" |
3.3. Public methods #
void setEventParams(Map<String, dynamic> params)
void addEventParams(Map<String, dynamic> params)
void addUserProperties(Map<String, dynamic> props)
static Future<void> setCommonProperties(Map<String, dynamic> props)
static Future<void> setFirstOpenTime(int firstOpenTimeMillis)
Ví dụ:
final installDay = DateTime.utc(2025,4,15,13,5,45).millisecondsSinceEpoch;
final firstOpenTime = DateTime.utc(2025,4,17,20,31,3).millisecondsSinceEpoch;
await Event.setFirstOpenTime(firstOpenTime);
await Event.setCommonProperties({
'level': 1,
'progress': 0.99,
});
Thêm params:
Event event = await Event.create("purchase_button_click");
event.setEventParams({"first_time_purchase": true, "first_time_login": false});
event.addEventParams({
"product_id": "sku_5678",
"price": 49.99,
"currency": "USD",
});
event.addUserProperties({
"membership_status": "premium",
"last_login_days": 2,
});
// Send event
DatabucketsEventTracker.addEvent(event);
4. Dừng & Khởi động SDK #
DatabucketsEventTracker.stop(); // Tạm dừng gửi dữ liệu
DatabucketsEventTracker.resume(); // Tiếp tục gửi dữ liệu
- Khi stop: event vẫn được lưu local, chỉ chưa gửi.
- Nên gọi
stop()
khi app sắp terminate.
5. Các sự kiện tự động #
5.1. first_open
#
- Gửi khi app lần đầu được mở sau cài đặt.
5.2. session_start
#
- Gửi khi session mới bắt đầu.
5.3. app_focus_end
#
- Gửi khi user thoát và chạy app ở background
5.4. session_end
#
- Session kết thúc sau 30 phút kể từ event
last_event_timestamp
6. Một số lưu ý khác #
Khi clear SharedPreferences
, cần sao lưu & set lại các giá trị:
- first_open_time
- is_sent_first_open
- install_day
- session_number
- user_pseudo_id
- current_session_start
- last_event_timestamp
- install_time_millis
- session_duration