Скрыть фоновое уведомление о местоположении в случае сбоя

Я использую workmanager для получения местоположения пользователя в фоновом режиме каждые 15 минут. Когда получение местоположения не удается, я получаю уведомление с ошибкой, как вы можете видеть на картинке. Я хотел бы знать, как я могу предотвратить появление уведомления в случаях сбоя.

          void callbackDispatcher() {
  Workmanager.executeTask((taskName, inputData) async {
    if (taskName == FETCH_USER_POSITION_IN_BACKGROUND_TASK_NAME) {
      // TODO: Find a better way to get user position, maybe with ServiceLocator or even better with BLoC
      final dataSource = GeolocatorDataSource();
      final remoteDataSource = FirestoreRemoteDataSource(
        firebaseFirestore: FirebaseFirestore.instance,
      );
      final repository = GeolocationRepository(
        geolocationDataSource: dataSource,
        remoteDataSource: remoteDataSource,
      );

      final positionEither = await repository.getUserPosition();
      positionEither.fold((failure) async {
        print('failure: $failure');
      }, (position) async {
        print('position = $position');
        final storePositionEither =
            await repository.storeUserPosition(position, inputData['uid']);
        storePositionEither.fold((failure) async {
          print('failure: $failure');
        }, (isStored) async {
          print("Position has been successfully stored in background!");
        });
      });
    }

    return Future.value(true);
  });
}



void _initializeWorkManagerWhenAuthenticated(String userId) {
    bool isProduction = bool.fromEnvironment('dart.vm.product');

    Workmanager.initialize(
      callbackDispatcher,
      isInDebugMode: !isProduction,
    );

    Workmanager.registerPeriodicTask(
      FETCH_USER_POSITION_IN_BACKGROUND_TASK_ID,
      FETCH_USER_POSITION_IN_BACKGROUND_TASK_NAME,
      frequency: Duration(minutes: 15),
      existingWorkPolicy: ExistingWorkPolicy.keep,
      inputData: {
        'userId': userId,
      },
    );
  }

1 ответ

Вы проверили, появляются ли уведомления при запуске с isInDebugMode: false?

См. Https://github.com/fluttercommunity/flutter_workmanager/blob/ea274c33b60ef1a4e29bdd392a477f67466dc25d/lib/src/workmanager.dart#L90

Другие вопросы по тегам