From 3e644b5749caece9c019ab17aed958fc64c64705 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 3 May 2022 11:15:42 +0100 Subject: [PATCH] refactor: update example app to support initializing default apps from Android resource strings --- .../android/app/src/main/AndroidManifest.xml | 1 + .../app/src/main/res/values/values.xml | 11 +++ .../example/android/build.gradle | 1 - .../example/lib/firebase_config.dart | 35 -------- .../example/lib/firebase_options.dart | 87 +++++++++++++++++++ .../firebase_core/example/lib/main.dart | 44 ++++++---- 6 files changed, 127 insertions(+), 52 deletions(-) create mode 100644 packages/firebase_core/firebase_core/example/android/app/src/main/res/values/values.xml delete mode 100644 packages/firebase_core/firebase_core/example/lib/firebase_config.dart create mode 100644 packages/firebase_core/firebase_core/example/lib/firebase_options.dart diff --git a/packages/firebase_core/firebase_core/example/android/app/src/main/AndroidManifest.xml b/packages/firebase_core/firebase_core/example/android/app/src/main/AndroidManifest.xml index 0aa72d970821..8a53ec0757d9 100644 --- a/packages/firebase_core/firebase_core/example/android/app/src/main/AndroidManifest.xml +++ b/packages/firebase_core/firebase_core/example/android/app/src/main/AndroidManifest.xml @@ -6,6 +6,7 @@ + + 406099696497-a12gakvts4epfk5pkio7dphc1anjiggc.apps.googleusercontent.com + https://flutterfire-e2e-tests-default-rtdb.europe-west1.firebasedatabase.app + 406099696497 + AIzaSyCdRjCVZlhrq72RuEklEyyxYlBRCYhI2Sw + 1:406099696497:android:0d4ed619c031c0ac3574d0 + AIzaSyCdRjCVZlhrq72RuEklEyyxYlBRCYhI2Sw + flutterfire-e2e-tests.appspot.com + flutterfire-e2e-tests + diff --git a/packages/firebase_core/firebase_core/example/android/build.gradle b/packages/firebase_core/firebase_core/example/android/build.gradle index 0c7aa9240ce0..041ce013891c 100644 --- a/packages/firebase_core/firebase_core/example/android/build.gradle +++ b/packages/firebase_core/firebase_core/example/android/build.gradle @@ -6,7 +6,6 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:4.1.2' - classpath 'com.google.gms:google-services:4.3.4' } } diff --git a/packages/firebase_core/firebase_core/example/lib/firebase_config.dart b/packages/firebase_core/firebase_core/example/lib/firebase_config.dart deleted file mode 100644 index fe45999096b4..000000000000 --- a/packages/firebase_core/firebase_core/example/lib/firebase_config.dart +++ /dev/null @@ -1,35 +0,0 @@ -import 'dart:io'; - -import 'package:firebase_core/firebase_core.dart'; -import 'package:flutter/foundation.dart'; - -class DefaultFirebaseConfig { - static FirebaseOptions get platformOptions { - if (kIsWeb) { - // Web - return const FirebaseOptions( - appId: '1:448618578101:web:0b650370bb29e29cac3efc', - apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0', - projectId: 'react-native-firebase-testing', - messagingSenderId: '448618578101', - ); - } else if (Platform.isIOS || Platform.isMacOS) { - // iOS and MacOS - return const FirebaseOptions( - appId: '1:448618578101:ios:0b650370bb29e29cac3efc', - apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0', - projectId: 'react-native-firebase-testing', - messagingSenderId: '448618578101', - iosBundleId: 'io.flutter.plugins.firebasecoreexample', - ); - } else { - // Android - return const FirebaseOptions( - appId: '1:448618578101:android:0446912d5f1476b6ac3efc', - apiKey: 'AIzaSyCuu4tbv9CwwTudNOweMNstzZHIDBhgJxA', - projectId: 'react-native-firebase-testing', - messagingSenderId: '448618578101', - ); - } - } -} diff --git a/packages/firebase_core/firebase_core/example/lib/firebase_options.dart b/packages/firebase_core/firebase_core/example/lib/firebase_options.dart new file mode 100644 index 000000000000..191948500928 --- /dev/null +++ b/packages/firebase_core/firebase_core/example/lib/firebase_options.dart @@ -0,0 +1,87 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + return web; + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + return macos; + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions web = FirebaseOptions( + apiKey: 'AIzaSyB7wZb2tO1-Fs6GbDADUSTs2Qs3w08Hovw', + appId: '1:406099696497:web:87e25e51afe982cd3574d0', + messagingSenderId: '406099696497', + projectId: 'flutterfire-e2e-tests', + authDomain: 'flutterfire-e2e-tests.firebaseapp.com', + databaseURL: + 'https://flutterfire-e2e-tests-default-rtdb.europe-west1.firebasedatabase.app', + storageBucket: 'flutterfire-e2e-tests.appspot.com', + measurementId: 'G-JN95N1JV2E', + ); + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyCdRjCVZlhrq72RuEklEyyxYlBRCYhI2Sw', + appId: '1:406099696497:android:0d4ed619c031c0ac3574d0', + messagingSenderId: '406099696497', + projectId: 'flutterfire-e2e-tests', + databaseURL: + 'https://flutterfire-e2e-tests-default-rtdb.europe-west1.firebasedatabase.app', + storageBucket: 'flutterfire-e2e-tests.appspot.com', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyDooSUGSf63Ghq02_iIhtnmwMDs4HlWS6c', + appId: '1:406099696497:ios:acd9c8e17b5e620e3574d0', + messagingSenderId: '406099696497', + projectId: 'flutterfire-e2e-tests', + databaseURL: + 'https://flutterfire-e2e-tests-default-rtdb.europe-west1.firebasedatabase.app', + storageBucket: 'flutterfire-e2e-tests.appspot.com', + androidClientId: + '406099696497-tvtvuiqogct1gs1s6lh114jeps7hpjm5.apps.googleusercontent.com', + iosClientId: + '406099696497-taeapvle10rf355ljcvq5dt134mkghmp.apps.googleusercontent.com', + iosBundleId: 'io.flutter.plugins.firebase.tests', + ); + + static const FirebaseOptions macos = FirebaseOptions( + apiKey: 'AIzaSyDooSUGSf63Ghq02_iIhtnmwMDs4HlWS6c', + appId: '1:406099696497:ios:acd9c8e17b5e620e3574d0', + messagingSenderId: '406099696497', + projectId: 'flutterfire-e2e-tests', + databaseURL: + 'https://flutterfire-e2e-tests-default-rtdb.europe-west1.firebasedatabase.app', + storageBucket: 'flutterfire-e2e-tests.appspot.com', + androidClientId: + '406099696497-tvtvuiqogct1gs1s6lh114jeps7hpjm5.apps.googleusercontent.com', + iosClientId: + '406099696497-taeapvle10rf355ljcvq5dt134mkghmp.apps.googleusercontent.com', + iosBundleId: 'io.flutter.plugins.firebase.tests', + ); +} diff --git a/packages/firebase_core/firebase_core/example/lib/main.dart b/packages/firebase_core/firebase_core/example/lib/main.dart index 13ae5fa6a618..78a4243b8085 100644 --- a/packages/firebase_core/firebase_core/example/lib/main.dart +++ b/packages/firebase_core/firebase_core/example/lib/main.dart @@ -3,9 +3,10 @@ // found in the LICENSE file. import 'dart:async'; -import 'package:firebase_core_example/firebase_config.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; +import 'firebase_options.dart'; void main() => runApp(const MyApp()); @@ -14,23 +15,27 @@ class MyApp extends StatelessWidget { String get name => 'foo'; - FirebaseOptions get firebaseOptions => const FirebaseOptions( - appId: '1:448618578101:ios:0b650370bb29e29cac3efc', - apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0', - projectId: 'react-native-firebase-testing', - messagingSenderId: '448618578101', - ); - Future initializeDefault() async { FirebaseApp app = await Firebase.initializeApp( - options: DefaultFirebaseConfig.platformOptions, + options: DefaultFirebaseOptions.currentPlatform, ); print('Initialized default app $app'); } + Future initializeDefaultFromAndroidResource() async { + if (defaultTargetPlatform != TargetPlatform.android || kIsWeb) { + print('Not running on Android, skipping'); + return; + } + FirebaseApp app = await Firebase.initializeApp(); + print('Initialized default app $app from Android resource'); + } + Future initializeSecondary() async { - FirebaseApp app = - await Firebase.initializeApp(name: name, options: firebaseOptions); + FirebaseApp app = await Firebase.initializeApp( + name: name, + options: DefaultFirebaseOptions.currentPlatform, + ); print('Initialized $app'); } @@ -41,9 +46,9 @@ class MyApp extends StatelessWidget { } void options() { - final FirebaseApp app = Firebase.app(name); + final FirebaseApp app = Firebase.app(); final options = app.options; - print('Current options for app $name: $options'); + print('Current options for app ${app.name}: $options'); } Future delete() async { @@ -69,21 +74,28 @@ class MyApp extends StatelessWidget { onPressed: initializeDefault, child: const Text('Initialize default app'), ), + if (defaultTargetPlatform == TargetPlatform.android && !kIsWeb) + ElevatedButton( + onPressed: initializeDefaultFromAndroidResource, + child: const Text( + 'Initialize default app from Android resources', + ), + ), ElevatedButton( onPressed: initializeSecondary, child: const Text('Initialize secondary app'), ), ElevatedButton( onPressed: apps, - child: const Text('Get apps'), + child: const Text('List apps'), ), ElevatedButton( onPressed: options, - child: const Text('List options'), + child: const Text('List default options'), ), ElevatedButton( onPressed: delete, - child: const Text('Delete app'), + child: const Text('Delete secondary app'), ), ], ),