doInit method
get current platform from
Theme.of(context).platform
or
defaultTargetPlatform
Implementation
Future<RemoteMessage?> doInit({
FCMRequestFunc? requestFunc,
TargetPlatform? platform,
}) async {
platform ??= defaultTargetPlatform;
//disable on windows and linux
_canUseFCM = kIsWeb ||
(platform != TargetPlatform.windows &&
platform != TargetPlatform.linux);
if (canUseFCM &&
(kIsWeb ||
platform == TargetPlatform.iOS ||
platform == TargetPlatform.macOS)) {
final settings = await requestFunc?.call();
if (settings != null) {
print('User permission: ${settings.authorizationStatus}');
if (settings.authorizationStatus == AuthorizationStatus.denied ||
settings.authorizationStatus == AuthorizationStatus.notDetermined) {
_canUseFCM = false;
}
}
}
if (canUseFCM) {
final initMessage = await FirebaseMessaging.instance.getInitialMessage();
_streamSubs['onMessage'] = FirebaseMessaging.onMessage.listen((event) {
_raiseEvent(NotificationSource.OnMessage, event);
});
FirebaseMessaging.onBackgroundMessage(_handleBackgroundNotifs);
_streamSubs['onMessageOpenedApp'] =
FirebaseMessaging.onMessageOpenedApp.listen((event) {
_raiseEvent(NotificationSource.OnMessageOpenedApp, event);
});
return initMessage;
} else {
return null;
}
}