在 Flutter 应用程序中上传到 Firebase 存储时面临“未创建 Firebase 应用程序”

kam*_*nga 10 dart firebase flutter firebase-storage android-workmanager

我想收集用户浏览数据以用于 Flutter 应用程序的离线后端分析。做到这一点的最佳方法是什么?

我计划做的是在使用WorkManager包上传它的应用程序上运行每日 cron。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  Workmanager().initialize(uploadUserData, isInDebugMode: true);
  Workmanager()
      .registerOneOffTask('1', 'task1', initialDelay: Duration(seconds: 10));
  runApp(MyApp());
}

void uploadUserData() {
  Workmanager().executeTask((task, inputData) {
    firebase_storage.FirebaseStorage.instance
        .ref('/uploads/test_workmanager.txt')
        .putString('workmanager test');
    return Future.value(true);
  });
}
Run Code Online (Sandbox Code Playgroud)

我在运行上述代码时遇到以下问题

E/BackgroundWorker( 6733): errorCode: error, errorMessage: [core/no-app]没有创建 Firebase 应用程序“[DEFAULT]” - 调用 Firebase.initializeApp()

I / WM-WorkerWrapper(6733):工作结果失败[id = 81642715-826f-4d40-b8ec-9d86eab75136,tags = {be.tramckrijte.workmanager.BackgroundWorker}]

我在调用 workmanager 任务之前以多种方式检查了 firebase 是否已初始化(使用firebase.apps.length& .whenComplete

更新:许多人怀疑 firebase 连接是否正确:基本上,如果我只是调用firebase_storage....putStringinmain()而不是 inside ,一切都会正常工作Workmanager().executeTask。所以,麻烦只是由于Workmanager

Pha*_*ouz 1

您可以在调用任何 Firebase 调用之前Firebase.initializeApp();在该方法中再次调用。Workmanager().executeTask()