databuckets_event_tracker 1.2.2 copy "databuckets_event_tracker: ^1.2.2" to clipboard
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