|
|
|
|
@ -1,12 +1,11 @@
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
import 'package:firebase_core/firebase_core.dart';
|
|
|
|
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
|
|
|
|
|
|
|
|
|
// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
|
|
|
|
|
import 'package:huawei_push/huawei_push.dart' as huawei_push;
|
|
|
|
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
|
|
|
|
@ -50,13 +49,8 @@ class AppNotifications {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void init(String? firebaseToken, BuildContext context) async {
|
|
|
|
|
// if (Platform.isAndroid) {
|
|
|
|
|
// hmsApiAvailability = HmsApiAvailability();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
this.context = context;
|
|
|
|
|
|
|
|
|
|
print("Firebase init");
|
|
|
|
|
debugPrint("Firebase init");
|
|
|
|
|
await requestPermissions();
|
|
|
|
|
AppState().setDeviceToken = firebaseToken;
|
|
|
|
|
await Permission.notification.isDenied.then((bool value) {
|
|
|
|
|
@ -84,30 +78,60 @@ class AppNotifications {
|
|
|
|
|
AppState().setDeviceToken = token;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (Platform.isAndroid) {
|
|
|
|
|
// await hmsApiAvailability.isHMSAvailable().then((value) async {
|
|
|
|
|
if (!(await Utils.isGoogleServicesAvailable())) {
|
|
|
|
|
huawei_push.Push.enableLogger();
|
|
|
|
|
var result = await huawei_push.Push.setAutoInitEnabled(true);
|
|
|
|
|
|
|
|
|
|
huawei_push.Push.onNotificationOpenedApp.listen((message) {
|
|
|
|
|
// newMessage(toFirebaseRemoteMessage(message));
|
|
|
|
|
}, onError: (e) => print(e.toString()));
|
|
|
|
|
|
|
|
|
|
huawei_push.Push.onMessageReceivedStream.listen((message) {
|
|
|
|
|
// newMessage(toFirebaseRemoteMessage(message));
|
|
|
|
|
}, onError: (e) => print(e.toString()));
|
|
|
|
|
}
|
|
|
|
|
// }).catchError((err) {
|
|
|
|
|
// print(err);
|
|
|
|
|
// });
|
|
|
|
|
}
|
|
|
|
|
// if (Platform.isAndroid) {
|
|
|
|
|
// // await hmsApiAvailability.isHMSAvailable().then((value) async {
|
|
|
|
|
// if (!(await Utils.isGoogleServicesAvailable())) {
|
|
|
|
|
// huawei_push.Push.enableLogger();
|
|
|
|
|
// var result = await huawei_push.Push.setAutoInitEnabled(true);
|
|
|
|
|
//
|
|
|
|
|
// huawei_push.Push.onNotificationOpenedApp.listen((message) {
|
|
|
|
|
// print("onNotificationOpenedApp");
|
|
|
|
|
// print(message);
|
|
|
|
|
// // newMessage(toFirebaseRemoteMessage(message));
|
|
|
|
|
// }, onError: (e) => print(e.toString()));
|
|
|
|
|
//
|
|
|
|
|
// huawei_push.Push.onMessageReceivedStream.listen((message) {
|
|
|
|
|
// print("onMessageReceivedStream");
|
|
|
|
|
// print(message);
|
|
|
|
|
// // newMessage(toFirebaseRemoteMessage(message));
|
|
|
|
|
// }, onError: (e) => print(e.toString()));
|
|
|
|
|
// }
|
|
|
|
|
// // }).catchError((err) {
|
|
|
|
|
// // print(err);
|
|
|
|
|
// // });
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void initHuaweiPush(Function loginCallback) {
|
|
|
|
|
Future<void> initHuaweiPush(Function loginCallback) async {
|
|
|
|
|
AppState().setIsHuawei = true;
|
|
|
|
|
initTokenStream(loginCallback);
|
|
|
|
|
huawei_push.Push.enableLogger();
|
|
|
|
|
huawei_push.Push.getToken("");
|
|
|
|
|
var result = await huawei_push.Push.setAutoInitEnabled(true);
|
|
|
|
|
debugPrint("HUAWEI PUSH TOKEN RESULT: $result");
|
|
|
|
|
huawei_push.Push.onMessageReceivedStream.listen(onMessageReceived);
|
|
|
|
|
//huawei_push.Push.registerBackgroundMessageHandler(huaweiBackgroundMessage);
|
|
|
|
|
bool backgroundMessageHandler = await huawei_push.Push.registerBackgroundMessageHandler(huaweiBackgroundMessage);
|
|
|
|
|
debugPrint("Huawei Background Message Handler Registered: $backgroundMessageHandler");
|
|
|
|
|
initTokenStream(loginCallback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void onMessageReceived(huawei_push.RemoteMessage remoteMessage) {
|
|
|
|
|
dynamic data = remoteMessage.data;
|
|
|
|
|
if (data != null) {
|
|
|
|
|
huawei_push.Push.localNotification(
|
|
|
|
|
<String, String>{
|
|
|
|
|
huawei_push.HMSLocalNotificationAttr.TITLE: 'DataMessage Received',
|
|
|
|
|
huawei_push.HMSLocalNotificationAttr.MESSAGE: data,
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
print('onMessageReceived' + 'Data: $data');
|
|
|
|
|
RemoteMessage message = RemoteMessage(
|
|
|
|
|
data: jsonDecode(remoteMessage.data!),
|
|
|
|
|
);
|
|
|
|
|
_handleMessage(message);
|
|
|
|
|
} else {
|
|
|
|
|
print('onMessageReceived' + 'No data is present.');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// HUAWEI PUSH TOKEN IMPLEMENTATION
|
|
|
|
|
@ -122,8 +146,8 @@ class AppNotifications {
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> initTokenStream(Function loginCallback) async {
|
|
|
|
|
huawei_push.Push.getTokenStream.listen(_onTokenEvent, onError: _onTokenError).onData((data) {
|
|
|
|
|
void initTokenStream(Function loginCallback) {
|
|
|
|
|
huawei_push.Push.getTokenStream.listen(_onTokenEvent, onError: _onTokenError).onData((data) async {
|
|
|
|
|
AppState().setHuaweiPushToken = data;
|
|
|
|
|
debugPrint("HUAWEI PUSH TOKEN: $data");
|
|
|
|
|
loginCallback();
|
|
|
|
|
@ -211,3 +235,22 @@ Future<void> backgroundMessageHandler(RemoteMessage message) async {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void huaweiBackgroundMessage(huawei_push.RemoteMessage remoteMessage) async {
|
|
|
|
|
dynamic data = remoteMessage.data;
|
|
|
|
|
if (data != null) {
|
|
|
|
|
print(
|
|
|
|
|
'Background message is received, sending local notification.',
|
|
|
|
|
);
|
|
|
|
|
huawei_push.Push.localNotification(
|
|
|
|
|
<String, String>{
|
|
|
|
|
huawei_push.HMSLocalNotificationAttr.TITLE: '[Headless] DataMessage Received',
|
|
|
|
|
huawei_push.HMSLocalNotificationAttr.MESSAGE: data,
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
print(
|
|
|
|
|
'Background message is received. There is no data in the message.',
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|