You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB

1 year ago
  1. using Microsoft.Maui.LifecycleEvents;
  2. using Plugin.Firebase.Auth;
  3. using Plugin.Firebase.Bundled.Platforms.Android;
  4. using Plugin.Firebase.Bundled.Shared;
  5. using Plugin.Firebase.Crashlytics;
  6. namespace firebase;
  7. public static class MauiProgram
  8. {
  9. public static MauiApp CreateMauiApp()
  10. {
  11. var builder = MauiApp.CreateBuilder();
  12. builder
  13. .UseMauiApp<App>()
  14. .RegisterFirebaseServices()
  15. .ConfigureFonts(fonts =>
  16. {
  17. fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
  18. fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
  19. });
  20. return builder.Build();
  21. }
  22. private static MauiAppBuilder RegisterFirebaseServices(this MauiAppBuilder builder)
  23. {
  24. builder.ConfigureLifecycleEvents(events => {
  25. #if IOS
  26. events.AddiOS(iOS => iOS.FinishedLaunching((app, launchOptions) => {
  27. CrossFirebase.Initialize(CreateCrossFirebaseSettings());
  28. return false;
  29. }));
  30. #else
  31. events.AddAndroid(android => android.OnCreate((activity, _) =>
  32. CrossFirebase.Initialize(activity, CreateCrossFirebaseSettings())));
  33. CrossFirebaseCrashlytics.Current.SetCrashlyticsCollectionEnabled(true);
  34. #endif
  35. });
  36. builder.Services.AddSingleton(_ => CrossFirebaseAuth.Current);
  37. return builder;
  38. }
  39. private static CrossFirebaseSettings CreateCrossFirebaseSettings()
  40. {
  41. return new CrossFirebaseSettings(
  42. isAuthEnabled: true,
  43. isCloudMessagingEnabled: true,
  44. isAnalyticsEnabled: true);
  45. }
  46. }