Límites de seguridad de integraciones nativas de Business App
Usa este contrato cuando un flujo de Business App cruce los límites del almacenamiento del dispositivo, una superficie del sistema operativo, un proveedor de tiempo real o push, un mapa o una salida física. Un módulo nativo incluido, control visible, identificador de proveedor o solicitud del cliente solo demuestra la intención de una capa. No demuestra permisos, entrega, persistencia, finalización externa, limpieza ni compatibilidad del despliegue.
Antes de empezar
- Relaciona la compilación instalada de Business App con la revisión correspondiente de Ordering.co Components y el entorno previsto de API/proveedor.
- Usa datos sintéticos mínimos y específicos para el propósito. Nunca pruebes con identificadores reales de clientes, pedidos, ubicaciones, mensajes, archivos, pagos, dispositivos, notificaciones o impresoras.
- Antes de invocar una transferencia al dispositivo o proveedor, define un único efecto permitido, quién lo observará, el tiempo límite, la reversión o limpieza y la respuesta para evitar repetirlo.
- Considera que el inicio normal de la aplicación puede producir efectos: API, socket, push, ubicación y otros proveedores pueden inicializarse antes de que el operador seleccione un control.
Alcance y versión
| Límite de responsabilidad | Límite público compatible | Limitación de versión |
|---|---|---|
| Business App | Controla el acceso registrado desde la interfaz, la lógica por plataforma, el estado visible, la invocación de módulos nativos y el fallback inmediato que se muestra al operador. | El comportamiento descrito corresponde a una revisión orientada a una versión; no demuestra qué contiene un binario instalado. |
| Ordering.co Components | Controla el estado compartido de sesión, configuración, pedido, negocio, eventos, socket y cliente de API que usa la aplicación. | La compatibilidad depende de la revisión exacta de Components emparejada. Una rama móvil no demuestra compatibilidad. |
| Ordering.co API | Controla autenticación del servidor, propiedad, validación, lecturas, persistencia, registros, trabajos y efectos con proveedores de las solicitudes que sí recibe. | El comportamiento de API descrito no está correlacionado con un entorno desplegado. La intención del cliente no es un recibo del servidor. |
| Sistema operativo y proveedor externo | Controla la interfaz de permisos, recursos del dispositivo, comportamiento de aplicaciones externas, entrega, descubrimiento, conexión, ventanas de compartir/imprimir y resultados físicos. | El comportamiento varía según plataforma, versión/configuración del proveedor, módulos instalados, estado del dispositivo y permisos. |
| Responsable de integración o publicación | Controla la configuración del entorno, matriz de compilaciones compatibles, fixture sintético, presupuesto de efectos, observabilidad, redacción, limpieza y escalación. | Considera sin demostrar cualquier efecto de ejecución o proveedor hasta que un único intento acotado tenga un recibo independiente. |
Matriz de responsabilidad de integraciones
| Familia de integración | Responsabilidad de App o Components | Responsabilidad de API | Responsabilidad del sistema operativo o proveedor | Límite de seguridad requerido |
|---|---|---|---|---|
| Notificaciones push | Comprobar permisos, inicializar el estado configurado del proveedor, intentar registrar el dispositivo, separar eventos dentro de la aplicación e intentar una intención de pedido compatible después de una interacción. | Autenticar y validar el registro apto del dispositivo, y guardarlo si se acepta. | Permisos, identidad del proveedor, entrega, comportamiento en segundo plano, interacción con notificaciones, sonido e insignias. | Verificar por separado permisos, recibo del registro, entrega y navegación. No se garantiza la entrega ni la apertura del pedido. |
| Sockets en tiempo real | Crear una conexión con la configuración actual del proyecto/sesión, unirse a salas propias de la aplicación y consumir eventos. Los listeners del proveedor no siempre se eliminan con el mismo callback, y no se desregistran todos los manejadores de conexión. | Autorizar los datos expuestos mediante lecturas normales y producir eventos del servidor donde esté implementado. | Transporte del socket, tiempos de conexión, reintentos, orden, duplicación y disponibilidad de red. | Trata el estado de conexión y cada evento como no atómicos. Cuenta los registros y eliminaciones de listeners y bloquea la aceptación si quedan residuos o se repiten eventos. Push y tiempo real usan transportes distintos. |
| Imágenes y biblioteca multimedia | Abrir la biblioteca de imágenes de la plataforma, mantener el contenido seleccionado en el estado de la aplicación, previsualizar el contenido compatible y construir una solicitud solo para un flujo conectado. | Autorizar, validar, guardar o rechazar la mutación correspondiente de perfil/mensaje cuando se envía una solicitud. | Permiso de biblioteca, interfaz del selector, URI/contenido del recurso elegido, cancelación y codificación de plataforma. | Minimiza el contenido y los metadatos; cancelar no equivale a fallo; no afirmes persistencia antes de una respuesta aceptada de API. |
| Documentos y archivos generales | Un selector visible puede devolver metadatos de archivos locales, pero la ruta de selección no demuestra que un documento seleccionado se incluya en el contrato de envío de mensajes. | No se establece responsabilidad de carga de documentos para la ruta de selección no conectada. | Acceso al selector, URI del documento, acceso temporal y cancelación. | No anuncies adjuntos de documentos ni un administrador general de archivos. Reconsidera la función solo después de establecer integración de extremo a extremo, validación, privacidad, representación y limpieza. |
| Mapas y geolocalización | Solicitar o seguir la ubicación solo desde un flujo accesible y mostrar los marcadores disponibles. Existe una acción para detener, pero no se ha establecido la limpieza automática de un seguimiento activo al desmontar la pantalla. | Autorizar lecturas acotadas de pedidos/negocios/conductores y validar cualquier mutación de ubicación que se envíe. | Permiso de ubicación, precisión, lecturas simuladas/obsoletas, teselas del mapa, comportamiento del mapa nativo y conectividad. | Las coordenadas son sensibles. El permiso, la posición actual, la limpieza del seguimiento, la representación del mapa y la actualización del servidor son resultados independientes. |
| Aplicaciones externas | Construir transferencias web, de correo, teléfono, texto o ajustes del sistema compatibles a partir de datos visibles validados. | Solo es responsable de las lecturas de datos acotadas previas; abrir la aplicación externa no es un éxito de API. | Compatibilidad de URL, aplicación destino, confirmación del usuario, comportamiento de llamada/mensaje/navegador/ajustes y retorno a la aplicación. | Previsualiza el destino y los datos. Una solicitud para abrir no demuestra que la acción externa se haya completado. |
| Portapapeles | Escribir el texto exacto que seleccionó el operador en un control accesible. | No existe contrato de persistencia o limpieza del portapapeles. | Disponibilidad, retención y sincronización del portapapeles, y acceso de otras aplicaciones. | Trata como sensible el contenido copiado de pedidos/contactos; no se garantiza lectura posterior ni borrado temporizado. |
| PDF, compartir e impresión del sistema | Generar una salida a partir del pedido cargado y ejecutar la rama de la plataforma. Un intento de Save / Export PDF puede recurrir automáticamente a la impresión del sistema cuando no se devuelve una ruta de archivo o se captura un error. | Solo es responsable de los datos de pedido acotados previos; aquí no se establece un recibo de salida del servidor. | Creación de archivos temporales, hoja de compartir, diálogo de impresión, aplicación destino, cola, cancelación y resultado final. | Presupuesta la creación de PDF, compartir e impresión alternativa como un solo intento combinado. Una ruta o diálogo no prueba que se completó; nunca repitas un resultado ambiguo y define la limpieza de archivos. |
| Impresoras guardadas y de hardware | Mantener la configuración local de impresoras compatible, invocar el controlador seleccionado y mostrar el estado que devuelve el proveedor. | No se establece sincronización con el servidor de la lista local de impresoras guardadas. | Bluetooth, LAN, USB, descubrimiento, permisos, conexión, papel, tapa, cola y salida física. | Los efectos de hardware son secuenciales. Un aviso no prueba que haya papel impreso; las rutas manuales y automáticas pueden duplicar la salida. |
| Audio y vibración | Invocar el sonido o vibración propios de la aplicación en estados elegibles dentro de la aplicación o en tiempo real, y quitar listeners/temporizadores según su ciclo de vida responsable. | No hay recibo de audio o vibración. | Volumen, foco, modo silencioso, disponibilidad de vibración, obtención remota de sonidos y políticas del dispositivo. | No uses el sonido/vibración como prueba de entrega ni de estado del pedido; deja de repetir la salida cuando se cierre el estado. |
Ciclo de vida y resultados
Para cada transferencia nativa o a un proveedor:
- Confirma que el flujo esté registrado y que la compilación actual incluya la capacidad nativa requerida.
- Antes del efecto, valida proyecto, sesión, configuración, plataforma, permisos y entrada sintética mínima para el propósito.
- Invoca la transferencia una sola vez dentro de un presupuesto explícito de efectos. Incluye cada fallback automático que pueda iniciar una acción.
- Observa por separado el resultado de la aplicación, API, sistema operativo/proveedor y efecto físico. Ninguna capa sustituye a otra.
- Si se agota el tiempo, se cancela, rechaza, queda un estado parcial o se desconoce el resultado, detente. No repitas un mensaje, registro de notificación, transferencia externa, acción de compartir o imprimir, ni otro efecto solo para comprobar si funcionó.
- Elimina archivos temporales y estado local sensible, detén explícitamente seguimientos/listeners/temporizadores cuando sea compatible, restaura ajustes locales permitidos y verifica los recuentos de altas/bajas y cualquier residuo de proveedor, cola, portapapeles o salida física antes de aceptar la limpieza. No se ha establecido la limpieza automática para todos los casos.
Una integración no está completa porque se resuelva una promesa, aparezca un aviso o diálogo, se conecte un socket o el proveedor devuelva un identificador. La aceptación requiere el observador específico del efecto y el recibo de limpieza definidos por quien es responsable de la integración.
Alcance del producto nativo
La aplicación nativa registrada admite flujos acotados de operadores relacionados con pedidos, mensajes, negocios, perfil, sesiones, notificaciones, mapas e impresión. Este contrato no establece destinos nativos para informes generales, ajustes administrativos amplios, un directorio de clientes ni un administrador general de archivos.
Las exportaciones de Components compartidos, capacidades de API, funciones web, controles de selectores y elementos de trabajo históricos no añaden destinos nativos. Reconsidera un resultado excluido solo cuando una versión posterior lo registre y se establezcan sus requisitos de autorización, comportamiento de plataforma/proveedor, privacidad, limpieza y documentación.
Límites de plataforma, privacidad y errores
- iOS y Android pueden seguir rutas diferentes para permisos, archivos, compartir, imprimir, mapas, segundo plano y proveedores de hardware. Existen rutas específicas de plataforma, pero no se ha establecido paridad entre plataformas.
- Las imágenes elegidas, metadatos de documentos, coordenadas, datos de contacto, contenido de pedidos, archivos generados, texto copiado, identificadores de proveedores y destinos de impresoras pueden ser sensibles. No los incluyas en registros ni transferencias de diagnóstico salvo que lo requiera el esquema redactado aprobado.
- Distintos puntos de invocación pueden devolver, capturar, reducir a un mensaje genérico, registrar o ignorar errores nativos y del proveedor. Que no se vea un error no significa que haya tenido éxito.
- La limpieza del cliente puede ser asíncrona o parcial. Desmontar una pantalla no demuestra por sí solo que se hayan borrado un proveedor, seguimiento, listener, archivo temporal, cola, portapapeles o efecto físico.
- Este contrato separa responsabilidades. No confirma la configuración de proveedores, el comportamiento de una API desplegada, los permisos incluidos en la app instalada, la compatibilidad del hardware ni la finalización de extremo a extremo.
Diagnóstico y escalación
| Comportamiento observable | Límite responsable | Siguiente paso |
|---|---|---|
| Un aviso de permisos o una página de ajustes difiere de lo previsto. | Sistema operativo y compilación instalada | Detente; registra la plataforma/compilación y el estado visible no sensible. Vuelve a validar el contrato específico de plataforma antes de otro intento. |
| Un selector devuelve un recurso, pero el flujo posterior no tiene un resultado confirmado. | Integración de la aplicación y efecto de API | No supongas que se cargó o guardó. Si es seguro, elimina la selección local y consulta el contrato compatible de solicitud/resultado. |
| Aparece un mapa sin posición actual o precisa. | Proveedores de ubicación y mapas | No actúes según coordenadas inferidas. Verifica por separado permisos, vigencia, precisión y datos acotados de API. |
| Se abre una aplicación externa o un diálogo para compartir/imprimir sin resultado final. | Sistema operativo o proveedor destino | Considera desconocido el resultado. No repitas; usa el recibo aprobado del destino o escala el caso. |
| La impresora indica éxito, pero falta la salida, está incompleta o duplicada. | Hardware/proveedor e invocación de la aplicación | Detén la impresión, conserva el estado sintético de cola/papel y escala con el recibo del único intento. |
| El sonido, vibración, tiempo real o push se comporta de forma discrepante. | Ciclos de vida de proveedores independientes | Diagnostica cada transporte por separado; ninguno demuestra que los otros estén configurados o actualizados. |
| Se repiten eventos en tiempo real o siguen las actualizaciones de ubicación cuando la vista debería estar inactiva. | Ciclo de vida del listener/seguimiento de la aplicación | Detén el escenario. Registra recuentos de altas/bajas y de inicio/detención del seguimiento, verifica callbacks residuales sin datos sensibles y exige limpieza explícita antes de otro intento. |
| Save / Export PDF abre un diálogo de impresión después de fallar la creación del PDF o no devolver una ruta. | Fallback de la aplicación e impresión del sistema operativo | Trata PDF e impresión como un único intento sin resolver. Si es seguro, cancela; no lo repitas y verifica la limpieza del archivo temporal y la cola de impresión. |
| El comportamiento cambia después de actualizar la app, Components, API, proveedor o sistema operativo. | Responsable de publicación e integración | Confirma la tupla completa de versiones y vuelve a ejecutar solo los contratos sintéticos afectados antes de restablecer la compatibilidad. |