Improve notification icon initialization and fallback
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ icons_launcher:
|
||||
android:
|
||||
enable: true
|
||||
image_path: "assets/Florid.png"
|
||||
notification_image: "assets/monochrome.png"
|
||||
# notification_image: "assets/monochrome.png"
|
||||
# adaptive_background_color: '#ffffff'
|
||||
adaptive_background_image: "assets/Background.png"
|
||||
adaptive_foreground_image: "assets/Foreground.png"
|
||||
|
||||
+7
-2
@@ -7,8 +7,14 @@ import 'providers/download_provider.dart';
|
||||
import 'providers/settings_provider.dart';
|
||||
import 'screens/home_screen.dart';
|
||||
import 'services/fdroid_api_service.dart';
|
||||
import 'services/notification_service.dart';
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
// Initialize notification service and request permission
|
||||
await NotificationService().init();
|
||||
|
||||
void main() {
|
||||
runApp(const FloridApp());
|
||||
}
|
||||
|
||||
@@ -65,7 +71,6 @@ class FloridApp extends StatelessWidget {
|
||||
],
|
||||
child: Consumer<SettingsProvider>(
|
||||
builder: (context, settings, _) {
|
||||
|
||||
return MaterialApp(
|
||||
title: 'Florid - F-Droid Client',
|
||||
debugShowCheckedModeBanner: false,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
|
||||
class NotificationService {
|
||||
@@ -18,17 +19,33 @@ class NotificationService {
|
||||
Future<void> init() async {
|
||||
_flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||
|
||||
const AndroidInitializationSettings androidInitializationSettings =
|
||||
AndroidInitializationSettings('ic_notification');
|
||||
|
||||
const InitializationSettings initializationSettings =
|
||||
InitializationSettings(android: androidInitializationSettings);
|
||||
|
||||
await _flutterLocalNotificationsPlugin.initialize(
|
||||
initializationSettings,
|
||||
onDidReceiveNotificationResponse: _onNotificationTapped,
|
||||
const InitializationSettings customIconSettings = InitializationSettings(
|
||||
android: AndroidInitializationSettings('ic_notification'),
|
||||
);
|
||||
|
||||
const InitializationSettings fallbackIconSettings = InitializationSettings(
|
||||
android: AndroidInitializationSettings('@mipmap/ic_launcher'),
|
||||
);
|
||||
|
||||
try {
|
||||
await _flutterLocalNotificationsPlugin.initialize(
|
||||
customIconSettings,
|
||||
onDidReceiveNotificationResponse: _onNotificationTapped,
|
||||
);
|
||||
} on PlatformException catch (e) {
|
||||
if (e.code == 'invalid_icon') {
|
||||
debugPrint(
|
||||
'Notification icon ic_notification missing, falling back to launcher icon: $e',
|
||||
);
|
||||
await _flutterLocalNotificationsPlugin.initialize(
|
||||
fallbackIconSettings,
|
||||
onDidReceiveNotificationResponse: _onNotificationTapped,
|
||||
);
|
||||
} else {
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
// Request notification permission on Android 13+
|
||||
await requestPermission();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user