Как мы можем добавить крашлитику firebase во флаттер, когда приложение флаттера само добавляется к существующим приложениям для iOS и Android?

Я хочу добавить приложение flutter в свое существующее собственное приложение, что я могу успешно сделать с помощью документации flutter . После этого я хочу регистрировать сбои и другие данные, используя firebase для флаттер-экранов. Поскольку обычная реализация Flutter Fire требует внесения изменений в папки android и iOS, но эти папки не существуют в проекте flutter. Итак, есть идеи, как это сделать?

1 ответ

Я была такая же проблема.

Я решил таким образом:

  1. Не вносите изменения в папку ios и android.
  2. Используйте обратный вызов, чтобы отправить информацию о сбое нативной стороне.
  3. Настройте FarebaseCrashlytics только в собственном приложении.

Например:

Нативная сторона в Swift:

      let methodChannel = FlutterMethodChannel(name: "FLUTTER_CHANNEL", binaryMessenger: flutterEngine.binaryMessenger)
                methodChannel.setMethodCallHandler { (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
                    if call.method == "HANDLE_ERROR" {
                        let userInfo: [String: String] = [
                            "deviceId": UIDevice.current.identifierForVendor!.uuidString
                        ]
                        var errorData = "";
                        if let args = call.arguments as? Dictionary<String, Any> {
                            errorData = args["data"] as? String ?? ""
                        }

                        let error = NSError(domain: errorData, code: 0, userInfo: userInfo)

                        Crashlytics.crashlytics().record(error: error)
                    }
                }

Флаттер сторона:

         Future<void> _handleErrorNative([String errorData]) async {
    try {
      final methodChannel = MethodChannel("FLUTTER_CHANNEL");
      await methodChannel.invokeMethod(
        'HANDLE_ERROR',
        {
          "data": errorData,
        },
      );
    } on PlatformException catch (_) {
      print("_handleErrorNative PlatformException");
    }
  }

Помните, что сбой будет отправлен только после повторного открытия приложения.

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