From f59d7118ed950765c85a305608884d80b73b4887 Mon Sep 17 00:00:00 2001 From: Ben Goldsworthy Date: Wed, 14 Oct 2020 13:43:09 +0100 Subject: [PATCH] Add Firebase messaging (Android-only, foreground-only) --- android/app/build.gradle | 5 +- android/app/src/main/AndroidManifest.xml | 1 + .../co/localspend/localspend/Application.java | 21 +++ android/build.gradle | 3 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- lib/env/dev.json | 4 +- lib/main.dart | 37 +++-- pubspec.lock | 138 +++++++++++++----- pubspec.yaml | 1 + 9 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 android/app/src/main/java/uk/co/localspend/localspend/Application.java diff --git a/android/app/build.gradle b/android/app/build.gradle index 865c574..09054d7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -8,7 +8,7 @@ if (localPropertiesFile.exists()) { def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") + throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') @@ -58,4 +58,7 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.google.firebase:firebase-messaging:20.3.0' } + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 53c13db..deba7d1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -14,6 +14,7 @@ FlutterApplication and put your custom class here. --> message) async { + print('onMessage: $message'); + }, + onLaunch: (Map message) async { + print('onLaunch: $message'); + }, + onResume: (Map message) async { + print('onResume: $message'); + }, + ); + + // Required on iOS; non-op on Android. + _firebaseMessaging.requestNotificationPermissions(); + + return MaterialApp( debugShowCheckedModeBanner: false, localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], - supportedLocales: [Locale("en")], - title: "Local Spend Tracker", - theme: new ThemeData( + supportedLocales: [Locale('en')], + title: 'Local Spend Tracker', + theme: ThemeData( primarySwatch: Colors.blueGrey, ), routes: { - "/HomePage": (BuildContext context) => HomePage(), - "/LoginPage": (BuildContext context) => LoginPage(), + '/HomePage': (BuildContext context) => HomePage(), + '/LoginPage': (BuildContext context) => LoginPage(), '/MapPage': (BuildContext context) => MapPage(), - "/ReceiptPage": (BuildContext context) => ReceiptPage2(), - "/MorePage": (BuildContext context) => MorePage(), + '/ReceiptPage': (BuildContext context) => ReceiptPage2(), + '/MorePage': (BuildContext context) => MorePage(), }, home: SplashScreen(), ); diff --git a/pubspec.lock b/pubspec.lock index 0b7ae06..d772738 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.15" + version: "0.39.14" args: dependency: transitive description: @@ -63,21 +63,21 @@ packages: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "1.3.10" + version: "1.3.11" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "1.10.0" + version: "1.10.1" build_runner_core: dependency: transitive description: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "5.2.0" + version: "6.0.1" built_collection: dependency: transitive description: @@ -147,7 +147,7 @@ packages: name: code_builder url: "https://pub.dartlang.org" source: hosted - version: "3.4.0" + version: "3.5.0" collection: dependency: transitive description: @@ -204,6 +204,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" file: dependency: transitive description: @@ -211,6 +218,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.2.1" + firebase: + dependency: transitive + description: + name: firebase + url: "https://pub.dartlang.org" + source: hosted + version: "7.3.0" + firebase_core: + dependency: transitive + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0+1" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + firebase_messaging: + dependency: "direct main" + description: + name: firebase_messaging + url: "https://pub.dartlang.org" + source: hosted + version: "7.0.3" fixnum: dependency: transitive description: @@ -248,7 +290,7 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "1.0.8" + version: "1.0.11" flutter_test: dependency: "direct dev" description: flutter @@ -272,14 +314,14 @@ packages: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "0.5.28+1" + version: "0.5.33" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.4" graphs: dependency: transitive description: @@ -293,7 +335,7 @@ packages: name: html url: "https://pub.dartlang.org" source: hosted - version: "0.14.0+3" + version: "0.14.0+4" http: dependency: "direct main" description: @@ -342,14 +384,14 @@ packages: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.1.0" json_serializable: dependency: "direct main" description: name: json_serializable url: "https://pub.dartlang.org" source: hosted - version: "3.3.0" + version: "3.5.0" linkify: dependency: transitive description: @@ -384,7 +426,7 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "0.9.6+3" + version: "0.9.7" node_interop: dependency: transitive description: @@ -426,7 +468,14 @@ packages: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+1" pedantic: dependency: "direct dev" description: @@ -441,20 +490,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.1" - platform_detect: - dependency: transitive - description: - name: platform_detect - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" pool: dependency: transitive description: @@ -496,21 +538,21 @@ packages: name: sa_anicoto url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" sa_multi_tween: dependency: transitive description: name: sa_multi_tween url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.1.2" sa_stateless_animation: dependency: transitive description: name: sa_stateless_animation url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.3" sa_v1_migration: dependency: transitive description: @@ -524,14 +566,14 @@ packages: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "0.5.8" + version: "0.5.12" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.2+1" + version: "0.0.2+2" shared_preferences_macos: dependency: transitive description: @@ -553,13 +595,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2+7" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "0.7.7" + version: "0.7.9" shelf_web_socket: dependency: transitive description: @@ -573,7 +622,7 @@ packages: name: simple_animations url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.2.2" sky_engine: dependency: transitive description: flutter @@ -585,7 +634,7 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "0.9.6" + version: "0.9.7+1" source_span: dependency: transitive description: @@ -627,7 +676,14 @@ packages: name: supercharged url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.10.0" + supercharged_dart: + dependency: transitive + description: + name: supercharged_dart + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" term_glyph: dependency: transitive description: @@ -662,7 +718,7 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "5.5.0" + version: "5.7.2" url_launcher_linux: dependency: transitive description: @@ -676,21 +732,28 @@ packages: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+7" + version: "0.0.1+8" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.7" + version: "1.0.8" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.2" + version: "0.1.4+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" vector_math: dependency: transitive description: @@ -712,6 +775,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.3" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index fb53942..90a5df5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -28,6 +28,7 @@ dependencies: simple_animations: ^2.2.1 google_maps_flutter: ^0.5.20+5 json_serializable: ^3.3.0 + firebase_messaging: ^7.0.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.2