diff --git a/android/app/google-services.json b/android/app/google-services.json
new file mode 100644
index 0000000..083bbf7
--- /dev/null
+++ b/android/app/google-services.json
@@ -0,0 +1,48 @@
+{
+ "project_info": {
+ "project_number": "140549870532",
+ "project_id": "hasior-mess",
+ "storage_bucket": "hasior-mess.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:140549870532:android:3a66058c3fb0d866b28a91",
+ "android_client_info": {
+ "package_name": "com.example.flutter_application_1"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyD_b_JC-zVnlfwib0Wlafs6cnU4A_I4gwA"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:140549870532:android:e107f3828b0d488ab28a91",
+ "android_client_info": {
+ "package_name": "com.example.hasior_flutter"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyD_b_JC-zVnlfwib0Wlafs6cnU4A_I4gwA"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/android/build.gradle b/android/build.gradle
index e03bae4..17c5ac1 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -26,6 +26,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
new file mode 100644
index 0000000..87d26d4
--- /dev/null
+++ b/ios/Runner/GoogleService-Info.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ API_KEY
+ AIzaSyAxqqZSYTbR6WSIFCGpwtokzZQUdXpZyr4
+ GCM_SENDER_ID
+ 140549870532
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.example.hasiorFlutter
+ PROJECT_ID
+ hasior-mess
+ STORAGE_BUCKET
+ hasior-mess.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:140549870532:ios:578027dfad0a1ac8b28a91
+
+
\ No newline at end of file
diff --git a/ios/firebase_app_id_file.json b/ios/firebase_app_id_file.json
new file mode 100644
index 0000000..8139d0c
--- /dev/null
+++ b/ios/firebase_app_id_file.json
@@ -0,0 +1,7 @@
+{
+ "file_generated_by": "FlutterFire CLI",
+ "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
+ "GOOGLE_APP_ID": "1:140549870532:ios:578027dfad0a1ac8b28a91",
+ "FIREBASE_PROJECT_ID": "hasior-mess",
+ "GCM_SENDER_ID": "140549870532"
+}
\ No newline at end of file
diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart
new file mode 100644
index 0000000..5470fcf
--- /dev/null
+++ b/lib/firebase_options.dart
@@ -0,0 +1,74 @@
+// 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:
+ throw UnsupportedError(
+ 'DefaultFirebaseOptions have not been configured for macos - '
+ 'you can reconfigure this by running the FlutterFire CLI again.',
+ );
+ case TargetPlatform.windows:
+ throw UnsupportedError(
+ 'DefaultFirebaseOptions have not been configured for windows - '
+ 'you can reconfigure this by running the FlutterFire CLI again.',
+ );
+ case TargetPlatform.linux:
+ throw UnsupportedError(
+ 'DefaultFirebaseOptions have not been configured for linux - '
+ 'you can reconfigure this by running the FlutterFire CLI again.',
+ );
+ default:
+ throw UnsupportedError(
+ 'DefaultFirebaseOptions are not supported for this platform.',
+ );
+ }
+ }
+
+ static const FirebaseOptions web = FirebaseOptions(
+ apiKey: 'AIzaSyAUp2p693RxtlXCOYvu5eDbZW5XfyffkO4',
+ appId: '1:140549870532:web:a5a486e0bb783a3cb28a91',
+ messagingSenderId: '140549870532',
+ projectId: 'hasior-mess',
+ authDomain: 'hasior-mess.firebaseapp.com',
+ storageBucket: 'hasior-mess.appspot.com',
+ );
+
+ static const FirebaseOptions android = FirebaseOptions(
+ apiKey: 'AIzaSyD_b_JC-zVnlfwib0Wlafs6cnU4A_I4gwA',
+ appId: '1:140549870532:android:e107f3828b0d488ab28a91',
+ messagingSenderId: '140549870532',
+ projectId: 'hasior-mess',
+ storageBucket: 'hasior-mess.appspot.com',
+ );
+
+ static const FirebaseOptions ios = FirebaseOptions(
+ apiKey: 'AIzaSyAxqqZSYTbR6WSIFCGpwtokzZQUdXpZyr4',
+ appId: '1:140549870532:ios:578027dfad0a1ac8b28a91',
+ messagingSenderId: '140549870532',
+ projectId: 'hasior-mess',
+ storageBucket: 'hasior-mess.appspot.com',
+ iosBundleId: 'com.example.hasiorFlutter',
+ );
+}
diff --git a/lib/main.dart b/lib/main.dart
index e42edab..c3060be 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,11 +1,21 @@
+import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:hasior_flutter/constants/language_constants.dart';
+import 'package:hasior_flutter/firebase_options.dart';
import 'package:hasior_flutter/screens/home_screen.dart';
+import 'package:hasior_flutter/services/notification_service.dart';
import 'package:hasior_flutter/theme.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
-void main() {
+Future main() async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await Firebase.initializeApp(
+ options: DefaultFirebaseOptions.currentPlatform,
+ ).whenComplete(() => null);
+
+ await NotificationService().initNotification();
+
initializeDateFormatting();
runApp(const MyApp());
}
diff --git a/lib/services/notification_service.dart b/lib/services/notification_service.dart
new file mode 100644
index 0000000..52eb0ea
--- /dev/null
+++ b/lib/services/notification_service.dart
@@ -0,0 +1,19 @@
+import 'package:firebase_messaging/firebase_messaging.dart';
+
+Future handleBacgroundMessage(RemoteMessage message) async {
+ print('${message.notification?.title}');
+ print('${message.notification?.body}');
+ }
+
+class NotificationService {
+ final _firebaseMessaging = FirebaseMessaging.instance;
+
+ Future initNotification() async {
+ await _firebaseMessaging.requestPermission();
+ final token = await _firebaseMessaging.getToken();
+ _firebaseMessaging.subscribeToTopic('MainFeedPL');
+ print('token: ${token}'); // This needs to be stored
+ FirebaseMessaging.onBackgroundMessage(handleBacgroundMessage);
+ FirebaseMessaging.onMessage.listen(handleBacgroundMessage);
+ }
+}
\ No newline at end of file
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index 46a437b..bbfeeeb 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -7,6 +7,8 @@ import Foundation
import connectivity_plus_macos
import file_selector_macos
+import firebase_core
+import firebase_messaging
import network_info_plus_macos
import shared_preferences_foundation
import url_launcher_macos
@@ -14,6 +16,8 @@ import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
+ FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
+ FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
NetworkInfoPlusPlugin.register(with: registry.registrar(forPlugin: "NetworkInfoPlusPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
diff --git a/pubspec.lock b/pubspec.lock
index 845fbbf..290d576 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ _flutterfire_internals:
+ dependency: transitive
+ description:
+ name: _flutterfire_internals
+ sha256: f5628cd9c92ed11083f425fd1f8f1bc60ecdda458c81d73b143aeda036c35fe7
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.16"
archive:
dependency: transitive
description:
@@ -21,10 +29,10 @@ packages:
dependency: transitive
description:
name: async
- sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
- version: "2.10.0"
+ version: "2.11.0"
boolean_selector:
dependency: transitive
description:
@@ -37,10 +45,10 @@ packages:
dependency: transitive
description:
name: characters
- sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
+ sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
- version: "1.2.1"
+ version: "1.3.0"
checked_yaml:
dependency: transitive
description:
@@ -69,10 +77,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
+ sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
- version: "1.17.0"
+ version: "1.17.2"
connectivity_plus:
dependency: transitive
description:
@@ -225,6 +233,54 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.9.3+1"
+ firebase_core:
+ dependency: "direct main"
+ description:
+ name: firebase_core
+ sha256: "96607c0e829a581c2a483c658f04e8b159964c3bae2730f73297070bc85d40bb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.24.2"
+ firebase_core_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_core_platform_interface
+ sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.0.0"
+ firebase_core_web:
+ dependency: transitive
+ description:
+ name: firebase_core_web
+ sha256: d585bdf3c656c3f7821ba1bd44da5f13365d22fcecaf5eb75c4295246aaa83c0
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.10.0"
+ firebase_messaging:
+ dependency: "direct main"
+ description:
+ name: firebase_messaging
+ sha256: "980259425fa5e2afc03e533f33723335731d21a56fd255611083bceebf4373a8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "14.7.10"
+ firebase_messaging_platform_interface:
+ dependency: transitive
+ description:
+ name: firebase_messaging_platform_interface
+ sha256: "54e283a0e41d81d854636ad0dad73066adc53407a60a7c3189c9656e2f1b6107"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.18"
+ firebase_messaging_web:
+ dependency: transitive
+ description:
+ name: firebase_messaging_web
+ sha256: "90dc7ed885e90a24bb0e56d661d4d2b5f84429697fd2cbb9e5890a0ca370e6f4"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.5.18"
flutter:
dependency: "direct main"
description: flutter
@@ -425,26 +481,26 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
+ sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
- version: "0.12.13"
+ version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
+ sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
- version: "0.2.0"
+ version: "0.5.0"
meta:
dependency: transitive
description:
name: meta
- sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
+ sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev"
source: hosted
- version: "1.8.0"
+ version: "1.9.1"
mime:
dependency: transitive
description:
@@ -513,10 +569,10 @@ packages:
dependency: transitive
description:
name: path
- sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
+ sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
- version: "1.8.2"
+ version: "1.8.3"
path_provider_linux:
dependency: transitive
description:
@@ -670,10 +726,10 @@ packages:
dependency: transitive
description:
name: source_span
- sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
+ sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
stack_trace:
dependency: transitive
description:
@@ -710,10 +766,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
+ sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
- version: "0.4.16"
+ version: "0.6.0"
typed_data:
dependency: transitive
description:
@@ -802,6 +858,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.4-beta"
win32:
dependency: transitive
description:
@@ -835,5 +899,5 @@ packages:
source: hosted
version: "3.1.1"
sdks:
- dart: ">=2.19.0 <3.0.0"
+ dart: ">=3.1.0-185.0.dev <4.0.0"
flutter: ">=3.7.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 2b008fe..3ac0c6c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -46,6 +46,8 @@ dependencies:
flutter_offline: ^2.1.0
qr_flutter: ^4.0.0
qr_code_scanner: ^1.0.1
+ firebase_core: ^2.24.2
+ firebase_messaging: ^14.7.10
dependency_overrides:
intl: ^0.18.0
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 53bc1c1..f0887e5 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -8,6 +8,7 @@
#include
#include
+#include
#include
#include
@@ -16,6 +17,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows"));
+ FirebaseCorePluginCApiRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
NetworkInfoPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("NetworkInfoPlusWindowsPlugin"));
UrlLauncherWindowsRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index 9daa7c5..3e86c78 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -5,6 +5,7 @@
list(APPEND FLUTTER_PLUGIN_LIST
connectivity_plus_windows
file_selector_windows
+ firebase_core
network_info_plus_windows
url_launcher_windows
)