Push notifications handler implemented

merge-requests/136/head
haroon amjad 3 years ago
parent ed220b80a0
commit bd10bb4f1d

@ -30,6 +30,8 @@ class ChatApiClient {
{
"employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(),
"password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG",
"isMobile": true,
"deviceToken": AppState().getDeviceToken,
},
);
if (!kReleaseMode) {

@ -17,6 +17,12 @@ class AppState {
factory AppState() => _instance;
String? deviceToken = "";
set setDeviceToken(v) => deviceToken = v;
String? get getDeviceToken => deviceToken;
bool isAuthenticated = false;
set setIsAuthenticated(v) => isAuthenticated = v;

@ -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;
}
}
}

@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/api/login_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/classes/push-notification-handler.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
@ -91,8 +92,15 @@ class _LoginScreenState extends State<LoginScreen> {
try {
Utils.showLoading(context);
await Firebase.initializeApp();
await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
alert: true,
badge: true,
sound: true,
);
PushNotificationHandler(context).init();
_firebaseMessaging = FirebaseMessaging.instance;
firebaseToken = await _firebaseMessaging.getToken();
AppState().setDeviceToken = firebaseToken;
loginInfo = await LoginApiClient().getMobileLoginInfoNEW(firebaseToken ?? "", Platform.isAndroid ? "android" : "ios");
if (loginInfo == null) {
await checkPrefs();
@ -171,7 +179,6 @@ class _LoginScreenState extends State<LoginScreen> {
}
if (isAppOpenBySystem!) checkFirebaseToken();
}
// username.text = "15444";
return Scaffold(

@ -57,7 +57,7 @@ class MarathonDetailsCard extends StatelessWidget {
children: marathonDetailModel.sponsors!.first.sponsorPrizes!
.map(
(SponsorPrizes prizes) =>
"${AppState().isArabic(context) ? prizes.marathonPrizeAr : prizes.marathonPrizeAr}".toText16(color: MyColors.greenColor, isBold: true).paddingOnly(right: 5),
"${AppState().isArabic(context) ? prizes.marathonPrizeAr : prizes.marathonPrizeEn}".toText16(color: MyColors.greenColor, isBold: true).paddingOnly(right: 5),
)
.toList(),
),

@ -218,6 +218,15 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
Utils.showLoading(context);
bool isConnected = await WiFiForIoTPlugin.connect(AppState().getMohemmWifiSSID ?? "",
password: AppState().getMohemmWifiPassword ?? "", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false);
//
// print("CURRENT SSID: ${await WiFiForIoTPlugin.getSSID()}");
if (await WiFiForIoTPlugin.getSSID() == AppState().getMohemmWifiSSID) {
isConnected = true;
} else {
isConnected = false;
}
if (isConnected) {
if (Platform.isIOS) {
await closeWifiRequest();

Loading…
Cancel
Save