leafittome/lib/main.dart
cschlaefke 9aa49c641d iOS/TestFlight: App-Check-Release-Provider, App-Icon, Datenschutz-Hosting
- main.dart: App-Check-Provider per kReleaseMode umgeschaltet (Release =
  PlayIntegrity/AppAttest, Debug = Debug-Provider). Nötig, da die Functions
  App Check erzwingen — ein Release-Build mit Debug-Provider würde auf
  fremden Geräten bei jedem Function-Aufruf scheitern.
- App-Icon aus assets/icon/icon.png via flutter_launcher_icons generiert
  (iOS-Set + Android-Mipmaps).
- docs/legal/datenschutz.html: Platzhalter ausgefüllt, interner Hinweis raus.
- firebase.json: hosting-Block (public: docs/legal, Redirect / -> /datenschutz).
  URL: https://leaf-it-to-me-app.web.app/datenschutz
- Doku: firebase-einrichtung.md Schritt 9/10 + Hosting fortgeschrieben,
  handoff.md aktualisiert (iOS/TestFlight abgeschlossen, nur noch Android offen).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMRhL16hB14xcfef1qez7N
2026-09-08 20:37:49 +02:00

38 lines
1.4 KiB
Dart

import 'package:firebase_app_check/firebase_app_check.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'app.dart';
import 'core/settings/settings_provider.dart';
import 'firebase_options.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Release-Builds (TestFlight/Play): echte Attestierung über Play Integrity
// (Android) bzw. App Attest (iOS). Debug-Builds nutzen weiter den
// Debug-Provider mit den in der Firebase-Console hinterlegten Debug-Tokens.
// Die onCall-Functions erzwingen App Check (enforceAppCheck: true), deshalb
// muss ein Release-Build zwingend einen echten Provider verwenden.
// Siehe docs/firebase-einrichtung.md Schritt 9.
await FirebaseAppCheck.instance.activate(
providerAndroid: kReleaseMode
? const AndroidPlayIntegrityProvider()
: AndroidDebugProvider(),
providerApple: kReleaseMode
? const AppleAppAttestProvider()
: AppleDebugProvider(),
);
final prefs = await SharedPreferences.getInstance();
runApp(
ProviderScope(
overrides: [sharedPreferencesProvider.overrideWithValue(prefs)],
child: const LeafItToMeApp(),
),
);
}