Added dialog to ask users to enable Notifications
This commit is contained in:
parent
6816e77d21
commit
fe685c40fc
@ -53,6 +53,7 @@ class _AppState extends State<App> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FirebaseMessaging.onMessage.listen((message) => NotificationController.onForegroundMessageHandler(message, context));
|
FirebaseMessaging.onMessage.listen((message) => NotificationController.onForegroundMessageHandler(message, context));
|
||||||
|
FirebaseMessaging.onMessageOpenedApp.listen((message) => NotificationController.onForegroundMessageHandler(message, context));
|
||||||
FirebaseMessaging.onBackgroundMessage(NotificationController.onBackgroundMessageHandler);
|
FirebaseMessaging.onBackgroundMessage(NotificationController.onBackgroundMessageHandler);
|
||||||
|
|
||||||
super.initState();
|
super.initState();
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
@ -5,13 +6,33 @@ import 'dart:developer';
|
|||||||
import 'package:crypto/crypto.dart';
|
import 'package:crypto/crypto.dart';
|
||||||
import 'package:fast_rsa/fast_rsa.dart';
|
import 'package:fast_rsa/fast_rsa.dart';
|
||||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
|
import 'package:marianum_mobile/storage/base/settingsProvider.dart';
|
||||||
|
|
||||||
import '../api/mhsl/notify/register/notifyRegister.dart';
|
import '../api/mhsl/notify/register/notifyRegister.dart';
|
||||||
import '../api/mhsl/notify/register/notifyRegisterParams.dart';
|
import '../api/mhsl/notify/register/notifyRegisterParams.dart';
|
||||||
import '../model/accountData.dart';
|
import '../model/accountData.dart';
|
||||||
import '../model/endpointData.dart';
|
import '../model/endpointData.dart';
|
||||||
|
import '../widget/confirmDialog.dart';
|
||||||
|
|
||||||
class NotifyUpdater {
|
class NotifyUpdater {
|
||||||
|
static ConfirmDialog enableAfterDisclaimer(SettingsProvider settings) {
|
||||||
|
return ConfirmDialog(
|
||||||
|
title: "Warnung",
|
||||||
|
icon: Icons.warning_amber,
|
||||||
|
content: ""
|
||||||
|
"Die Push-Benachrichtigungen werden durch mhsl.eu versendet.\n\n"
|
||||||
|
"Durch das aktivieren dieser Funktion wird dein Nutzername, dein Password und eine Geräte-ID von mhsl dauerhaft gespeichert und verarbeitet.\n\n"
|
||||||
|
"Für mehr Informationen drücke lange auf die Einstellungsoption!",
|
||||||
|
confirmButton: "Aktivieren",
|
||||||
|
onConfirm: () {
|
||||||
|
FirebaseMessaging.instance.requestPermission(
|
||||||
|
provisional: false
|
||||||
|
);
|
||||||
|
settings.val(write: true).notificationSettings.enabled = true;
|
||||||
|
NotifyUpdater.registerToServer();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
static void registerToServer() async {
|
static void registerToServer() async {
|
||||||
String? fcmToken = await FirebaseMessaging.instance.getToken();
|
String? fcmToken = await FirebaseMessaging.instance.getToken();
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import 'package:provider/provider.dart';
|
|||||||
import '../../../api/marianumcloud/talk/createRoom/createRoom.dart';
|
import '../../../api/marianumcloud/talk/createRoom/createRoom.dart';
|
||||||
import '../../../api/marianumcloud/talk/createRoom/createRoomParams.dart';
|
import '../../../api/marianumcloud/talk/createRoom/createRoomParams.dart';
|
||||||
import '../../../model/chatList/chatListProps.dart';
|
import '../../../model/chatList/chatListProps.dart';
|
||||||
|
import '../../../notification/notifyUpdater.dart';
|
||||||
import '../../../storage/base/settingsProvider.dart';
|
import '../../../storage/base/settingsProvider.dart';
|
||||||
import '../../../widget/confirmDialog.dart';
|
import '../../../widget/confirmDialog.dart';
|
||||||
import '../../../widget/loadingSpinner.dart';
|
import '../../../widget/loadingSpinner.dart';
|
||||||
@ -27,13 +28,43 @@ class _ChatListState extends State<ChatList> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
FirebaseMessaging.instance.requestPermission(
|
|
||||||
provisional: false
|
|
||||||
);
|
|
||||||
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
||||||
_query();
|
_query();
|
||||||
|
|
||||||
|
SettingsProvider settings = Provider.of<SettingsProvider>(context, listen: false);
|
||||||
|
if(!settings.val().notificationSettings.enabled && !settings.val().notificationSettings.askUsageDismissed) {
|
||||||
|
settings.val(write: true).notificationSettings.askUsageDismissed = true;
|
||||||
|
|
||||||
|
ConfirmDialog(
|
||||||
|
icon: Icons.notifications_active_outlined,
|
||||||
|
title: "Benachrichtigungen aktivieren",
|
||||||
|
content: "Auf wunsch kannst du Push-Benachrichtigungen aktivieren. Deine Einstellungen kannst du jederzeit ändern.",
|
||||||
|
confirmButton: "Weiter",
|
||||||
|
onConfirm: () {
|
||||||
|
FirebaseMessaging.instance.requestPermission(
|
||||||
|
provisional: false
|
||||||
|
).then((value) {
|
||||||
|
switch (value.authorizationStatus) {
|
||||||
|
case AuthorizationStatus.authorized:
|
||||||
|
NotifyUpdater.enableAfterDisclaimer(settings).asDialog(context);
|
||||||
|
break;
|
||||||
|
case AuthorizationStatus.denied:
|
||||||
|
showDialog(context: context, builder: (context) => const AlertDialog(
|
||||||
|
content: Text("Du kannst die Benachrichtigungen später jederzeit in den App-Einstellungen aktivieren."),
|
||||||
|
));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
).asDialog(context);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _query({bool renew = false}) {
|
void _query({bool renew = false}) {
|
||||||
|
@ -157,19 +157,7 @@ class _SettingsState extends State<Settings> {
|
|||||||
value: settings.val().notificationSettings.enabled,
|
value: settings.val().notificationSettings.enabled,
|
||||||
onChanged: (e) {
|
onChanged: (e) {
|
||||||
if(e!) {
|
if(e!) {
|
||||||
ConfirmDialog(
|
NotifyUpdater.enableAfterDisclaimer(settings).asDialog(context);
|
||||||
title: "Warnung",
|
|
||||||
icon: Icons.warning_amber,
|
|
||||||
content: ""
|
|
||||||
"Die Push-Benachrichtigungen werden durch mhsl.eu versendet.\n\n"
|
|
||||||
"Durch das aktivieren dieser Funktion wird dein Nutzername, dein Password und eine Geräte-ID von mhsl dauerhaft gespeichert und verarbeitet.\n\n"
|
|
||||||
"Für mehr Informationen drücke lange auf die Einstellungsoption!",
|
|
||||||
confirmButton: "Aktivieren",
|
|
||||||
onConfirm: () {
|
|
||||||
settings.val(write: true).notificationSettings.enabled = e;
|
|
||||||
NotifyUpdater.registerToServer();
|
|
||||||
},
|
|
||||||
).asDialog(context);
|
|
||||||
} else {
|
} else {
|
||||||
settings.val(write: true).notificationSettings.enabled = e;
|
settings.val(write: true).notificationSettings.enabled = e;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user