Как мы можем добавить крашлитику firebase во флаттер, когда приложение флаттера само добавляется к существующим приложениям для iOS и Android?
Я хочу добавить приложение flutter в свое существующее собственное приложение, что я могу успешно сделать с помощью документации flutter . После этого я хочу регистрировать сбои и другие данные, используя firebase для флаттер-экранов. Поскольку обычная реализация Flutter Fire требует внесения изменений в папки android и iOS, но эти папки не существуют в проекте flutter. Итак, есть идеи, как это сделать?
1 ответ
Я была такая же проблема.
Я решил таким образом:
- Не вносите изменения в папку ios и android.
- Используйте обратный вызов, чтобы отправить информацию о сбое нативной стороне.
- Настройте 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");
}
}
Помните, что сбой будет отправлен только после повторного открытия приложения.