firebase messaging crashlytics

null-safety-migration
suvaysov 2023-06-23 14:08:01 +06:00
parent 5a9c95cd08
commit b514d3c931
11 changed files with 317 additions and 0 deletions

View File

@ -22,6 +22,10 @@ if (flutterVersionName == null) {
}
apply plugin: 'com.android.application'
// START: FlutterFire Configuration
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
// END: FlutterFire Configuration
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

View File

@ -0,0 +1,46 @@
{
"project_info": {
"project_number": "351765347506",
"project_id": "satu-59e73",
"storage_bucket": "satu-59e73.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:351765347506:android:edd4e6634e187e299cddab",
"android_client_info": {
"package_name": "kz.com.aman.satu"
}
},
"oauth_client": [
{
"client_id": "351765347506-l4vmirged6hrkufaaksj44gnald5pk42.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyALBO3oTbR35qMlhjVJ9ksknpFjyAlE69k"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "351765347506-l4vmirged6hrkufaaksj44gnald5pk42.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "351765347506-7jh0p4iv29fmh1pjhe1hsq73ruef0g3m.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "kz.com.amansatu"
}
}
]
}
}
}
],
"configuration_version": "1"
}

View File

@ -49,5 +49,11 @@
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
</application>
</manifest>

View File

@ -7,6 +7,10 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
// END: FlutterFire Configuration
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>351765347506-qaa1oe42bgf8hmmac7bea8lra2uosc7a.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.351765347506-qaa1oe42bgf8hmmac7bea8lra2uosc7a</string>
<key>API_KEY</key>
<string>AIzaSyAjXnh2r1Ds8lkbLEWAh4JUfkB_rnTsMUQ</string>
<key>GCM_SENDER_ID</key>
<string>351765347506</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>kz.com.aman.satu</string>
<key>PROJECT_ID</key>
<string>satu-59e73</string>
<key>STORAGE_BUCKET</key>
<string>satu-59e73.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:351765347506:ios:4e50508bc0271b1e9cddab</string>
</dict>
</plist>

View File

@ -57,5 +57,7 @@
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>FirebaseMessagingAutoInitEnabled</key>
<string>NO</string>
</dict>
</plist>

View File

@ -0,0 +1,7 @@
{
"file_generated_by": "FlutterFire CLI",
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
"GOOGLE_APP_ID": "1:351765347506:ios:4e50508bc0271b1e9cddab",
"FIREBASE_PROJECT_ID": "satu-59e73",
"GCM_SENDER_ID": "351765347506"
}

69
lib/firebase_options.dart Normal file
View File

@ -0,0 +1,69 @@
// 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) {
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for web - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
}
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 android = FirebaseOptions(
apiKey: 'AIzaSyALBO3oTbR35qMlhjVJ9ksknpFjyAlE69k',
appId: '1:351765347506:android:edd4e6634e187e299cddab',
messagingSenderId: '351765347506',
projectId: 'satu-59e73',
storageBucket: 'satu-59e73.appspot.com',
);
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyAjXnh2r1Ds8lkbLEWAh4JUfkB_rnTsMUQ',
appId: '1:351765347506:ios:4e50508bc0271b1e9cddab',
messagingSenderId: '351765347506',
projectId: 'satu-59e73',
storageBucket: 'satu-59e73.appspot.com',
iosClientId: '351765347506-qaa1oe42bgf8hmmac7bea8lra2uosc7a.apps.googleusercontent.com',
iosBundleId: 'kz.com.aman.satu',
);
}

View File

@ -1,10 +1,15 @@
import 'dart:io';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
import 'package:satu/routes/router.dart';
import 'package:satu/shared/app_colors.dart';
import 'package:satu/views/start_up/start_up_view.dart';
@ -27,10 +32,75 @@ void main() async {
yield LicenseEntryWithLineBreaks(['google_fonts'], license);
});
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await messaging();
await crashing();
await Redux.init();
runApp(MainApplication());
}
Future<void> messaging() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
await messaging.setAutoInitEnabled(true);
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
print('User granted permission: ${settings.authorizationStatus}');
await FirebaseMessaging.instance.subscribeToTopic('all');
if (Platform.isAndroid) {
// Android-specific code
await FirebaseMessaging.instance.subscribeToTopic('android');
} else if (Platform.isIOS) {
// iOS-specific code
await FirebaseMessaging.instance.subscribeToTopic('ios');
}
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
if (message.notification != null) {
locator<DialogService>()
.showDialog(description: message.notification?.body ?? '');
}
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) async {
if (message.notification != null) {
locator<DialogService>()
.showDialog(description: message.notification?.body ?? '');
}
});
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
}
Future<void> crashing() async {
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
}
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
// If you're going to use other Firebase services in the background, such as Firestore,
// make sure you call `initializeApp` before using other Firebase services.
await Firebase.initializeApp();
}
class MainApplication extends StatelessWidget {
@override
Widget build(BuildContext context) {

View File

@ -9,6 +9,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "61.0.0"
_flutterfire_internals:
dependency: transitive
description:
name: _flutterfire_internals
sha256: a742f71d7f3484253a623b30e19256aa4668ecbb3de6ad1beb0bcf8d4777ecd8
url: "https://pub.dev"
source: hosted
version: "1.3.3"
ai_barcode:
dependency: "direct main"
description:
@ -305,6 +313,70 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.1.4"
firebase_core:
dependency: "direct main"
description:
name: firebase_core
sha256: a4a99204da264a0aa9d54a332ea0315ce7b0768075139c77abefe98093dd98be
url: "https://pub.dev"
source: hosted
version: "2.14.0"
firebase_core_platform_interface:
dependency: transitive
description:
name: firebase_core_platform_interface
sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2
url: "https://pub.dev"
source: hosted
version: "4.8.0"
firebase_core_web:
dependency: transitive
description:
name: firebase_core_web
sha256: "0fd5c4b228de29b55fac38aed0d9e42514b3d3bd47675de52bf7f8fccaf922fa"
url: "https://pub.dev"
source: hosted
version: "2.6.0"
firebase_crashlytics:
dependency: "direct main"
description:
name: firebase_crashlytics
sha256: "398012cf7838f8a373a25da65dd62fc3a3f4abe4b5f886caa634952c3387dce3"
url: "https://pub.dev"
source: hosted
version: "3.3.3"
firebase_crashlytics_platform_interface:
dependency: transitive
description:
name: firebase_crashlytics_platform_interface
sha256: "39dfcc9a5ddfaa0588ad67f1016174dd9e19f6b31f592b8641bd559399567592"
url: "https://pub.dev"
source: hosted
version: "3.6.3"
firebase_messaging:
dependency: "direct main"
description:
name: firebase_messaging
sha256: "77d93f897c893fa7c8de433f6950123bd9c56f27fd7f88a032a53102ca23fcee"
url: "https://pub.dev"
source: hosted
version: "14.6.3"
firebase_messaging_platform_interface:
dependency: transitive
description:
name: firebase_messaging_platform_interface
sha256: e9e9dc48a3d8ffa67aaba3d6b1ebf74bc7d7d8c83d10b1458ff97878b9d8a2b0
url: "https://pub.dev"
source: hosted
version: "4.5.3"
firebase_messaging_web:
dependency: transitive
description:
name: firebase_messaging_web
sha256: "381f217e41e0e407baf8df21787b97e46fabfacefd6a953425be3a6cdf2269f4"
url: "https://pub.dev"
source: hosted
version: "3.5.3"
fixnum:
dependency: transitive
description:

View File

@ -60,6 +60,9 @@ dependencies:
location_permissions: ^4.0.1
esc_pos_utils: ^1.1.0
esc_pos_bluetooth: ^0.4.1
firebase_core: ^2.14.0
firebase_messaging: ^14.6.3
firebase_crashlytics: ^3.3.3
dev_dependencies:
build_runner: ^2.4.5
flutter_test: