startForegroundTask method

Future<bool> startForegroundTask()

Start the foreground service

Implementation

Future<bool> startForegroundTask() async {
  debugPrint("[DEBUG] Starting foreground location service at ${DateTime.now()}");

  // Check if the foreground service is already running
  final isRunning = await FlutterForegroundTask.isRunningService;
  if (isRunning) {
    debugPrint("[DEBUG] Foreground service is already running at ${DateTime.now()}");
    return true;
  }

  // Request notification permission for foreground service
  final notificationPermission = await FlutterForegroundTask.checkNotificationPermission();
  if (notificationPermission == NotificationPermission.denied) {
    debugPrint("[DEBUG] Requesting notification permission at ${DateTime.now()}");
    final permissionResult = await FlutterForegroundTask.requestNotificationPermission();
    if (permissionResult == NotificationPermission.denied) {
      debugPrint("[ERROR] Notification permission denied at ${DateTime.now()}");
      return false;
    }
  }

  // Register the foreground task
  bool success = await FlutterForegroundTask.startService(
    notificationTitle: 'Rali Navigation',
    notificationText: 'Rali is using your location for navigation',
    callback: startLocationTracking,
  );

  debugPrint("[DEBUG] Foreground service start result: $success at ${DateTime.now()}");
  return success;
}