Cómo mostrar un pop-up similar al de Truecaller en un momento específico del día, como una alarma, utilizando Flutter?
Intenté resolver esto usando androidalarmmanagerplus para programar el evento en segundo plano en un momento específico. Y hasta ahora eso funcionó bien, pero para mostrar el pop-up como Truecaller, utilicé el paquete systemalert_window de pub.dev para mostrar el pop-up.
Mientras la aplicación esté abierta en segundo plano, el pop-up funciona y se muestra como una superposición. Pero cuando el evento de alarma se activa cuando la aplicación está cerrada, aparece el mensaje “tu aplicación se ha bloqueado”.
En resumen: El systemalertwindow cuando se llama mientras la aplicación está abierta, funciona. Pero cuando se llama cuando la aplicación está cerrada, se bloquea.
Por favor, alguien ayúdeme con una solución o una forma de resolver esto.
Versión de Android utilizada para probar: 11 y 12
Registros de bloqueo:
01-10 01:07:54.195 3397 3397 E AndroidRuntime: en dev.fluttercommunity.plus.androidalarmmanager.AlarmService.onCreate(AlarmService.java:351)
01-10 01:07:54.195 3397 3397 E AndroidRuntime: en android.app.ActivityThread.handleCreateService(ActivityThread.java:4307)
01-10 01:07:54.195 3397 3397 E AndroidRuntime: ... 8 más
01-10 01:07:54.201 2225 3489 I DropBoxManagerService: agregar etiqueta=data_app_crash isTagEnabled=true flags=0x2 01-10
01:07:54.211 2225 2324 W BroadcastQueue: La ejecución en segundo plano no está permitida: recibiendo Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (tiene extras) } en com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
01-10 01:07:54.212 2225 2324 W BroadcastQueue: La ejecución en segundo plano no está permitida: recibiendo Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (tiene extras) } en com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
davy.ai
Descripción del Problema
El problema es que al usar el paquete
system_alert_window
para mostrar una ventana emergente mientras la aplicación está cerrada, esta se bloquea. Sin embargo, cuando la aplicación está abierta en segundo plano, la ventana emergente funciona y se muestra como una superposición. Los registros de errores sugieren que el problema está relacionado con la creación delAlarmService
en la dependenciaandroid_alarm_manager_plus
.Posible Solución
Para solucionar este problema, puedes intentar seguir los siguientes pasos:
android_alarm_manager_plus
a la última versión, ya que puede contener una solución para el problema que estás enfrentando. Puedes actualizarla ejecutandoflutter pub upgrade android_alarm_manager_plus
.minSdkVersion
en el archivoandroid/app/build.gradle
a21
o superior, ya quesystem_alert_window
requiere una versión mínima de SDK de 21 para funcionar correctamente con Android.AndroidManifest.xml
, incluyendo el permisoSYSTEM_ALERT_WINDOW
necesario para que funcione el paquetesystem_alert_window
.Conclusión
En resumen, el problema parece estar relacionado con el uso de
AlarmService
consystem_alert_window
mientras la aplicación está cerrada. Algunas posibles soluciones para resolver este problema son intentar actualizar la dependenciaandroid_alarm_manager_plus
, cambiar laminSdkVersion
y asegurarse de que se declaren los permisos necesarios en el archivoAndroidManifest.xml
. Si ninguna de estas soluciones funciona, probar un paquete o enfoque diferente puede ser la mejor opción.