Код: Выделить всё
firebase_core: ^2.25.5
firebase_crashlytics: ^3.4.16
firebase_analytics: ^10.8.7
firebase_messaging: ^14.7.17
Я пытаюсь настроить Flutter Firebase через
Код: Выделить всё
Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform
);
Моя цель — создать единую точку входа, настраиваемую с помощью аргументов dart-define или .env или чего-то подобного со всеми ключами API, идентификаторами пакетов и т. д. . (например, DefaultFirebaseOptions, созданный flutterfire_cli, который можно изменить с использованием обычного синтаксиса Dart с проверкой платформы, проверкой варианта и т. д.). Однако кажется невозможным удалить или даже заполнить некоторые значения заглушки в этих двух файлах конфигурации Android и iOS, поскольку плагин FB все равно просматривает их во время инициализации. Итак, я пришел к выводу, что аргумент options в методе Firebase.initializeApp почти ничего не делает, и инициализация Firebase с помощью метода «Pure Dart» бесполезна, если только вам не нужно несколько Экземпляры приложения FB внутри вашего приложения (один из них считается «по умолчанию», а другой должен иметь оригинальные имена, передаваемые аргументом name). flutterfire_cli может генерировать эти файлы конфигурации вместе с firebase_options.dart, но похоже, что мне придется продолжать управлять google-services.json для Android и flutterfire_cli. strong>GoogleService-Info.plist для iOS, как это было бы без настройки Dart.
Вы можете спросить меня, зачем мне это нужно?
Первый ответ это: «безопасность». Мой клиент хочет, чтобы ключи Firebase Api были скрыты из исходного кода, несмотря на информацию, приведенную в официальных документах FB, в которой говорится, что эти ключи предназначены для публичного доступа. Технически можно написать сценарий, который будет вставлять ключи API в google-services.json и GoogleService-Info.plist, но это кажется неудобным, поскольку эти файлы находятся под контролем исходного кода. и они нужны каждому разработчику в моей команде для запуска приложения.
Второй ответ: удобство. Было бы удобнее управлять одной точкой входа dart вместо двух точек входа платформы.
Я пробовал удалить google-services.json и GoogleService. -Info.plist полностью, и приложение не удалось собрать.
Я пытался полностью удалить из них ключевые поля API или заменить их некоторыми недопустимыми строками, и приложение аварийно завершало работу во время выполнения.Я просмотрел реализацию метода Firebase.initializeApp firebase_core и понял, что он начинается с _initializeCore(), которая просматривает собственные файлы конфигурации (исходный код)
Подробнее здесь: https://stackoverflow.com/questions/790 ... info-plist