init static method
Implementation
static Future<void> init(
String appName,
NotifyIcon defaultIcon,
NotifySound defaultSound,
) async {
_defaultIcon = defaultIcon;
_defaultSound = defaultSound;
await _configureLocalTimeZone();
// Android Setup
final AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings(
defaultIcon.name ?? '@mipmap/ic_launcher',
);
// iOS Setup
final DarwinInitializationSettings initializationSettingsDarwin =
DarwinInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
final InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsDarwin,
macOS: initializationSettingsDarwin,
);
await _notificationsPlugin.initialize(
initializationSettings,
onDidReceiveNotificationResponse: (NotificationResponse response) {
if (response.actionId != null) {
_actionStream.add(response.actionId!);
}
},
);
// Create default channel for Android
if (Platform.isAndroid) {
final channel = ChannelManager.createChannel(
id: ChannelManager.defaultChannelId,
name: ChannelManager.defaultChannelName,
description: ChannelManager.defaultChannelDescription,
sound: defaultSound,
);
await _notificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.createNotificationChannel(channel);
// Request Android 13+ permissions
try {
await _notificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.requestNotificationsPermission();
} catch (e) {
debugPrint('Failed to request android permissions: $e');
}
}
}