【问题标题】:How can we add Firebase Crashlytics in flutter where the flutter app is itself added to existing iOS and Android app?我们如何在 Flutter 应用程序本身添加到现有 iOS 和 Android 应用程序的情况下在 Flutter 中添加 Firebase Crashlytics?
【发布时间】:2021-06-15 10:50:38
【问题描述】:

我想在我现有的本机应用程序中添加一个 Flutter 应用程序,我可以使用 Flutter docs 成功地做到这一点。在此之后,我想使用 firebase 为颤动屏幕记录崩溃和其他数据。由于 Flutter Fire 的正常实现需要在 android 和 iOS 文件夹中进行更改,但 Flutter 项目中不存在这些文件夹。那么关于如何做到这一点有什么想法吗?

【问题讨论】:

  • evert flutter项目中有一个ios和android文件夹
  • 是的@YouriLieverdink,但是当我们创建一个颤振模块时,这些文件夹是不受源代码控制的生成文件夹,而且他们在文档中提到不要对这些文件夹进行任何更改更改可能会被颤动覆盖
  • 你能提供一个链接到这里提到的地方吗?
  • flutter.dev/docs/development/add-to-app/ios/… 在此处阅读注释,Android 也一样
  • 哦,我的错。我唯一能想到的就是分别为 iOS 和 Android 实现 Crashlytics。

标签: firebase flutter crashlytics flutter-add-to-app


【解决方案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)
                    }
                }

Flutter 方面:

   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");
    }
  }

请记住,只有在重新打开应用后才会发送崩溃。

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 2019-04-02
    • 2022-08-19
    • 2019-10-29
    • 1970-01-01
    • 2021-02-11
    • 2023-02-04
    • 2019-09-25
    • 1970-01-01
    相关资源
    最近更新 更多