Skip to main content

tasco_ota

Package tasco_ota tích hợp hạ tầng cập nhật ứng dụng tức thì (Over-The-Air Update) bằng cách triển khai thực tế công cụ Shorebird Engine bên dưới lớp trừu tượng OtaUpdater của tasco_core.


1. Cơ chế hoạt động

  • OtaUpdater Interface: Khai báo các giao tiếp cập nhật trong tasco_core để các module khác (như màn hình khởi động Splash) có thể gọi mà không cần biết engine thực tế là gì:
    • checkForUpdate(): Kiểm tra xem có bản vá (Patch) nào mới trên server hay không.
    • downloadUpdate(): Tải bản vá mới về thiết bị.
    • installUpdate(): Áp dụng bản vá vào luồng khởi chạy của ứng dụng.
  • ShorebirdOtaUpdater: Lớp thực thi (Implementation) nằm trong tasco_ota, giao tiếp trực tiếp với Shorebird SDK.

2. Hướng dẫn sử dụng

Khởi chạy và kiểm tra cập nhật tại màn hình Splash

import 'package:tasco_core/tasco_core.dart';
import 'package:tasco_ota/tasco_ota.dart';

class SplashCubit extends Cubit<SplashState> {
final OtaUpdater _otaUpdater; // Được GetIt resolve ra ShorebirdOtaUpdater từ tasco_ota

SplashCubit(this._otaUpdater) : super(SplashInitial());

Future<void> handleAppStartup() async {
try {
// 1. Kiểm tra bản vá mới
final bool hasUpdate = await _otaUpdater.checkForUpdate();

if (hasUpdate) {
// 2. Tiến hành tải bản vá
await _otaUpdater.downloadUpdate();

// 3. Thông báo cho người dùng khởi động lại hoặc tự động cập nhật
print('Đã cập nhật bản vá thành công. Ứng dụng sẽ áp dụng vào lần khởi động tới.');
}
} catch (e) {
// Bỏ qua lỗi cập nhật để không làm gián đoạn trải nghiệm khởi động app của user
print('Lỗi kiểm tra OTA: $e');
}

// Tiếp tục chuyển hướng vào màn hình chính
emit(SplashNavigateToHome());
}
}