Theo dõi lỗi sập và hành vi người dùng: Crashlytics và analytics cơ bản

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Sau khi phát hành, bạn không còn nhìn thấy máy của người dùng. Ứng dụng sập ở đâu, họ bỏ giữa chừng ở màn hình nào? Báo cáo lỗi sập và phân tích hành vi giúp bạn trả lời những câu hỏi đó bằng dữ liệu thay vì phỏng đoán. Bài viết giới thiệu ý tưởng và cách bắt đầu.

Hai loại thông tin khác nhau

  • Báo cáo lỗi sập (crash reporting): ghi lại khi ứng dụng bị sập hoặc gặp lỗi nghiêm trọng, kèm stack trace, thiết bị, phiên bản hệ điều hành. Giúp bạn sửa lỗi.
  • Phân tích (analytics): ghi lại các sự kiện như mở màn hình, bấm nút, hoàn thành đăng ký. Giúp bạn hiểu cách sản phẩm được dùng.

Firebase Crashlytics

Crashlytics là công cụ báo cáo lỗi sập miễn phí phổ biến, tích hợp với Firebase. Với Flutter, sau khi thiết lập Firebase, thêm gói và gắn các trình xử lý lỗi:

flutter pub add firebase_crashlytics
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // Lỗi từ framework Flutter
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  // Lỗi bất đồng bộ nằm ngoài framework
  PlatformDispatcher.instance.onError = (error, stack) {
    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
    return true;
  };

  runApp(const MyApp());
}

Bạn cũng có thể ghi lỗi không gây sập nhưng đáng lưu ý, và gắn thêm ngữ cảnh:

try {
  await repository.checkout();
} catch (e, st) {
  FirebaseCrashlytics.instance.log('Thanh toán thất bại ở bước xác nhận');
  FirebaseCrashlytics.instance.recordError(e, st);
}

Đọc báo cáo lỗi sập thế nào?

  1. Sắp xếp theo số người dùng bị ảnh hưởng, ưu tiên sửa lỗi lớn nhất trước.
  2. Xem stack trace để tìm dòng mã đầu tiên thuộc ứng dụng của bạn.
  3. Xem xu hướng theo phiên bản: lỗi mới xuất hiện sau bản phát hành nào.
  4. Kiểm tra thiết bị và hệ điều hành: lỗi có tập trung ở một hãng hay phiên bản cũ không.
  5. Dùng log và khóa tùy chỉnh để hiểu tình huống trước khi sập.

Nếu đã làm rối mã khi build, nhớ tải tệp symbols hoặc mapping lên để stack trace đọc được.

Analytics: ghi sự kiện có chủ đích

import 'package:firebase_analytics/firebase_analytics.dart';

await FirebaseAnalytics.instance.logEvent(
  name: 'add_to_cart',
  parameters: {
    'item_id': 'sku_42',
    'category': 'books',
  },
);

await FirebaseAnalytics.instance.logScreenView(screenName: 'ProductDetail');

Đừng ghi mọi thứ; hãy bắt đầu từ câu hỏi bạn cần trả lời.

Chọn sự kiện nào?

  • Phễu quan trọng: mở ứng dụng, đăng ký, thêm vào giỏ, thanh toán. Xem người dùng rơi rụng ở bước nào.
  • Tính năng chính: mức độ sử dụng của từng tính năng để quyết định đầu tư.
  • Lỗi trải nghiệm: số lần thử lại, thời gian tải màn hình, lỗi mạng.
  • Giữ chân: bao nhiêu người quay lại sau vài ngày, vài tuần.

Đặt tên sự kiện nhất quán

Thống nhất quy ước, ví dụ dạng động từ_đối_tượng viết thường có gạch dưới, và ghi tài liệu danh sách sự kiện. Tên lộn xộn khiến dữ liệu không dùng được sau vài tháng.

Quyền riêng tư và pháp lý

  • Không gửi thông tin nhận dạng cá nhân như email, số điện thoại, nội dung tin nhắn vào analytics hay báo cáo lỗi.
  • Minh bạch với người dùng về dữ liệu thu thập qua chính sách quyền riêng tư và khai báo trên cửa hàng.
  • Xin sự đồng ý và cho phép tắt thu thập khi quy định của khu vực yêu cầu.
  • Kiểm tra SDK bên thứ ba thu thập gì và khai báo cho đúng.

Biến dữ liệu thành hành động

Dữ liệu chỉ có giá trị khi dẫn đến quyết định. Đặt lịch xem lại báo cáo sau mỗi bản phát hành, đặt mục tiêu như giảm tỉ lệ sập, rồi theo dõi. Kết hợp với phát hành theo giai đoạn để phát hiện lỗi sớm và dừng lại trước khi lan rộng.

Kết luận

Crashlytics cho bạn biết ứng dụng hỏng ở đâu, analytics cho biết người dùng đang làm gì. Cài đặt cả hai từ sớm, ghi sự kiện có chủ đích và tôn trọng quyền riêng tư, bạn sẽ cải thiện sản phẩm dựa trên dữ liệu thật.

Thiết lập cảnh báo và quy trình xử lý

Theo dõi dữ liệu mà không có quy trình thì dữ liệu chỉ nằm đó. Hãy bật cảnh báo khi xuất hiện lỗi sập mới hoặc tỉ lệ sập vượt ngưỡng sau một bản phát hành. Phân công người xem báo cáo hằng tuần, gắn lỗi với phiên bản và tạo công việc sửa lỗi ưu tiên theo số người bị ảnh hưởng. Sau khi sửa, kiểm tra lại ở bản kế tiếp xem lỗi đã biến mất chưa. Đây là vòng lặp nhỏ nhưng giúp chất lượng ứng dụng tăng đều theo thời gian.

Để học cách vận hành ứng dụng sau khi phát hành, bạn có thể xem các khóa học tại codebem.com.

author_photo
Nguyễn Đình Cường

0 comment