init static method

Future<void> init(
  1. String appName,
  2. NotifyIcon defaultIcon,
  3. NotifySound defaultSound
)

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');
    }
  }
}