Merge branch 'master' into development_mirza
# Conflicts: # lib/classes/consts.dart # pubspec.yamlmerge-requests/140/head
commit
aa511f02ac
@ -0,0 +1,59 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:io';
|
||||||
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||||
|
import 'package:mohem_flutter_app/main.dart';
|
||||||
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
|
|
||||||
|
//final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||||
|
|
||||||
|
|
||||||
|
class AppNotifications {
|
||||||
|
static final AppNotifications _instance = AppNotifications._internal();
|
||||||
|
|
||||||
|
AppNotifications._internal();
|
||||||
|
|
||||||
|
factory AppNotifications() => _instance;
|
||||||
|
|
||||||
|
// Future<void> requestPermissions() async {
|
||||||
|
// if (Platform.isIOS) {
|
||||||
|
// await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<IOSFlutterLocalNotificationsPlugin>()?.requestPermissions(alert: true, badge: true, sound: true);
|
||||||
|
// } else if (Platform.isAndroid) {
|
||||||
|
// AndroidFlutterLocalNotificationsPlugin? androidImplementation = flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>();
|
||||||
|
// bool? granted = await androidImplementation?.requestPermission();
|
||||||
|
// if (granted == false) {
|
||||||
|
// print("-------------------- Permission Granted ------------------------");
|
||||||
|
// print(granted);
|
||||||
|
// await Permission.notification.request();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<void> isAndroidPermGranted() async {
|
||||||
|
// if (Platform.isAndroid) {
|
||||||
|
// bool granted = await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<AndroidFlutterLocalNotificationsPlugin>()?.areNotificationsEnabled() ?? false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
void initNotification(String? firebaseToken) async {
|
||||||
|
// await requestPermissions();
|
||||||
|
AppState().setDeviceToken = firebaseToken;
|
||||||
|
// await Permission.notification.isDenied.then((value) {
|
||||||
|
// if (value) {
|
||||||
|
// Permission.notification.request();
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage();
|
||||||
|
if (initialMessage != null) _handleMessage(initialMessage);
|
||||||
|
|
||||||
|
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
||||||
|
if (message.notification != null) _handleMessage(message);
|
||||||
|
});
|
||||||
|
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _handleMessage(RemoteMessage message) {
|
||||||
|
print("Handle Message");
|
||||||
|
logger.w(json.encode(message));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||||
|
|
||||||
|
// |--> Push Notification Background
|
||||||
|
Future<dynamic> backgroundMessageHandler(message) async {
|
||||||
|
print("Firebase backgroundMessageHandler!!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
class PushNotificationHandler {
|
||||||
|
final BuildContext context;
|
||||||
|
static PushNotificationHandler? _instance;
|
||||||
|
|
||||||
|
PushNotificationHandler(this.context) {
|
||||||
|
PushNotificationHandler._instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PushNotificationHandler getInstance() => _instance!;
|
||||||
|
|
||||||
|
void init() async {
|
||||||
|
FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
|
||||||
|
if (Platform.isIOS) {
|
||||||
|
await Future.delayed(Duration(milliseconds: 3000)).then((value) {
|
||||||
|
newMessage(message);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
newMessage(message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) async {
|
||||||
|
if (Platform.isIOS) {
|
||||||
|
await Future.delayed(Duration(milliseconds: 3000)).then((value) {
|
||||||
|
newMessage(message);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
newMessage(message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
FirebaseMessaging.instance.onTokenRefresh.listen((fcm_token) {
|
||||||
|
print("Push Notification onTokenRefresh: " + fcm_token);
|
||||||
|
AppState().setDeviceToken = fcm_token;
|
||||||
|
});
|
||||||
|
|
||||||
|
FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
void newMessage(RemoteMessage remoteMessage) async {
|
||||||
|
print("Remote Message: " + remoteMessage.data.toString());
|
||||||
|
if (remoteMessage.data.isEmpty) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue