在失败时隐藏后台位置通知

问题描述

我使用 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,},);
  }

enter image description here

解决方法

您是否检查过使用 isInDebugMode: false 运行时是否出现通知?

见:https://github.com/fluttercommunity/flutter_workmanager/blob/ea274c33b60ef1a4e29bdd392a477f67466dc25d/lib/src/workmanager.dart#L90

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...