📖 Documentación - GrupoIE Asistencia
📌 Importante: Esta aplicación no reemplaza servicios oficiales de emergencia como bomberos, policía o ambulancia pública. Su uso está limitado a redes privadas o internas, configuradas por el usuario, y no garantiza la atención inmediata de terceros oficiales.
- Version: 1.1.000
- Autor: Phixi Labs
- Creado: 7 Marzo, 2025
- Ultima Actualizacion: 27 Agosto, 2025
- Compatibilidad:
- ✅ Android - ✅ iOS
Si tiene alguna pregunta que estéfuera del alcance de este archivo de ayuda, no dude en enviarnos un correo electrónico a través de la Página de soporte.
🛠 Tecnologías Utilizadas
- Flutter (UI y lógica de la aplicación)
- Dart (Lenguaje de programación)
- Firebase (Crashlytics para registro de errores)
- Geolocator (Para obtener ubicación en tiempo real)
- Permission Handler (Para gestionar permisos)
- MethodChannel (Para realizar llamadas y enviar SMS en Android)
- Twilio API (Para enviar mensajes de asistencia vía SMS y WhatsApp)
- Url Launcher (Para abrir el marcador telefónico)
📂 Estructura del Proyecto
🚀 Instalación y Configuración
Requisitos Previos
- Tener Flutter instalado (Guía de instalación)
- Configurar Firebase en el proyecto (Guía de configuración)
- Tener una cuenta de Twilio para enviar SMS y WhatsApp
Dependencias
Asegúrate de incluir las siguientes dependencias en tu
dependencies: flutter: sdk: flutter geolocator: ^10.1.0 permission_handler: ^11.0.1 firebase_core: ^3.0.0 firebase_crashlytics: ^4.0.0 url_launcher: ^6.2.5 http: ^0.13.5
📲 Configuración de Permisos en Android e iOS
🔹 Android
En el archivo android/app/src/main/AndroidManifest.xml, agrega los siguientes permisos dentro de <manifest>
<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/>
Además, en <application>, agrega esta configuración si usas Twilio
<uses-cleartext-traffic="true"/>
Y en android/app/build.gradle, dentro de defaultConfig
minSdkVersion 21
🍏 iOS
En el archivo ios/Runner/Info.plist, agrega las siguientes claves para solicitar permisos al usuario:
<key>NSLocationWhenInUseUsageDescription</key> <string>Esta aplicación necesita acceder a tu ubicación para enviar alertas.</string>
También debes habilitar la opción de Permissions en el Podfile (ios/Podfile)
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ '$(inherited)', 'PERMISSION_PHONE=1', 'PERMISSION_LOCATION=1', 'PERMISSION_SMS=1' ] end end end
🎯 Funcionalidades Principales
📌 1. Solicitud de Permisos
Future_requestPermissions() async { Map statuses = await [ Permission.phone, Permission.sms, Permission.locationWhenInUse, ].request(); }
La aplicación solicita permisos para acceder al teléfono, SMS y ubicación.
📌 2. Llamada de Asistencia
Future_makeEmergencyCall() async { if (Platform.isAndroid) { try { await _callChannel.invokeMethod('realizarLlamada', {'numero': _emergencyNumber}); } catch (e) { _launchPhoneDialer(_emergencyNumber); } } else { _launchPhoneDialer(_emergencyNumber); } }
Realiza una llamada de asistencia utilizando MethodChannel en Android y url_launcher en iOS.
📌 3. Envío de Mensajes de asistencia
Future_sendEmergencyMessage() async { Position position = await Geolocator.getCurrentPosition(); String message = "🚨 asistencia! Mi ubicación: https://www.google.com/maps?q=${position.latitude},${position.longitude}"; if (Platform.isAndroid) { await _sendSMSChannel(message, _smsNumber); await _sendSMSTwilio(message, _whatsappNumber); } else { await _sendSMSTwilio(message, _smsNumber); } await _sendWhatsAppTwilio(message, _whatsappNumber); }
Obtiene la ubicación actual y envía un mensaje con la localización mediante SMS y WhatsApp.
📌 4. Interfaz de Usuario
Scaffold( appBar: AppBar( title: Image.asset("assets/images/logo.png", height: 55), ), body: Center( child: GestureDetector( onTap: isButtonDisabled ? null : () { _makeEmergencyCall(); _sendEmergencyMessage(); }, child: Container( width: 120, height: 120, decoration: BoxDecoration( color: isButtonDisabled ? Colors.blueGrey : Colors.red, shape: BoxShape.circle, ), child: Center( child: isLoading ? CircularProgressIndicator() : Text("LLAMAR"), ), ), ), ), )
El botón de asistencia activa la llamada y el envío de ubicación.
🛠 Errores y Soluciones
Error | Causa | Solucion |
---|---|---|
PlatformException en llamadas | Falta configuración en AndroidManifest.xml | <uses-permission android:name="android.permission.CALL_PHONE"/> |
GeolocationStatus.denied | Permiso de ubicación no concedido | Solicitar permiso manualmente desde Configuración |
Twilio API Unauthorized | Credenciales incorrectas | Revisar accountSid y authToken |
❓ Preguntas Frecuentes (FAQ)
📜 Fuentes y Créditos
- Flutter - (flutter.dev)
- Geolocator - (pub.dev/packages/geolocator)
- Firebase - (firebase.google.com)
- Twilio API - (twilio.com)
- Permission Handler - (pub.dev/packages/permission_handler)
- Url Launcher - (pub.dev/packages/url_launcher)
Desarrollado por Phixi Labs 🚀
📝 Registro de Cambios (Changelog)
v1.1.000 (27-08-2025)
🔹 Actualización de Call y SMS MethodChannel; funcionaba incorrectamente (Solo Android). 🔹 Actualización de diseño a estilo oscuro, cambio de íconos de apps y logos. 🔹 Textos de la aplicación actualizados para cumplir con las peticiones de las tiendas. 🔹 Corrección de bug al no abrir el Dial (Solo iOS). 🔹 Actualización de la información que obtienen Firebase Crashlytics y Firebase Analytics para recopilación correcta sin errores.
v1.0.000 (BETA) (23-03-2025)
🔹 Implementación de llamada de asistencia con MethodChannel. 🔹 Envío de ubicación a través de SMS y WhatsApp con Twilio API. 🔹 Animación de botón de asistencia. 🔹 Manejo de permisos en Android e iOS. 🔹 Integración con Firebase Crashlytics y Firebase Analytics para manejo de errores y recopiación de datos.