feat(app): add onboarding and harden alarms
This commit is contained in:
@@ -74,7 +74,7 @@ class ServicioAlarmasAndroid {
|
||||
debugPrint(
|
||||
'[PluriWave][alarmas] programar id=${alarma.id} nombre=${alarma.nombre} proxima=${proxima.toIso8601String()} preaviso=${proxima.subtract(const Duration(minutes: 30)).toIso8601String()}',
|
||||
);
|
||||
await _channel.invokeMethod<void>('scheduleAlarm', {
|
||||
final programada = await _channel.invokeMethod<bool>('scheduleAlarm', {
|
||||
'id': alarma.id,
|
||||
'title': alarma.nombre,
|
||||
'triggerAtMillis': proxima.millisecondsSinceEpoch,
|
||||
@@ -85,6 +85,11 @@ class ServicioAlarmasAndroid {
|
||||
'fallbackSound': alarma.sonidoInterno.name,
|
||||
'volume': alarma.volumen,
|
||||
});
|
||||
if (programada != true) {
|
||||
throw StateError(
|
||||
'Android no pudo programar una alarma exacta. Revisa el permiso de alarmas exactas.',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> cancelar(String alarmaId) =>
|
||||
@@ -96,6 +101,13 @@ class ServicioAlarmasAndroid {
|
||||
Future<void> detenerSonidoNativo(String alarmaId) =>
|
||||
_logAndInvokeVoid('stopNativeAlarmSound', {'id': alarmaId});
|
||||
|
||||
Future<bool> solicitarPermisoAlarmasExactas() async {
|
||||
final abierto = await _channel.invokeMethod<bool>(
|
||||
'requestExactAlarmPermission',
|
||||
);
|
||||
return abierto ?? false;
|
||||
}
|
||||
|
||||
Future<DiagnosticoAlarmasAndroid> diagnostico() async {
|
||||
debugPrint('[PluriWave][alarmas] diagnostico android');
|
||||
final raw = await _channel.invokeMethod<Map<Object?, Object?>>(
|
||||
|
||||
Reference in New Issue
Block a user