La puerta es distinta para el H5
Abre la misma función como página H5 dentro de un WebView y como mini-programa, y los permisos se comportan distinto. La página H5 vive en un motor de navegador limitado por el modelo de seguridad web estándar: navigator.geolocation devuelve una posición gruesa o falla en WebViews Android antiguos, getUserMedia para la cámara está restringido o desactivado, y los pagos saltan a una caja externa. La versión mini-programa invoca la misma intención por un puente nativo y simplemente funciona.
No es un defecto de código. Es el contenedor. El H5 negocia la capacidad a través de la capa de permisos del navegador; el mini-programa posee una lista blanca de capacidad a nivel de plataforma que el runtime mapea directamente a módulos nativos.
Qué es realmente un puente nativo
El runtime expone capacidades del dispositivo y la plataforma mediante una sola superficie de API revisada — la conocida familia wx.* — en lugar de dejar que cada página web renegocie el acceso con el navegador. Detrás de esa superficie, el puente enruta la llamada a la capa nativa: pago, ubicación precisa, cámara y escaneo, Bluetooth y NFC, sistema de archivos y biometría. Cada capacidad se declara por adelantado, la revisa la plataforma y se otorga como permiso persistente y de grano fino, no como un aviso de navegador por sesión.
El puente también explica por qué un mini-programa puede rivalizar en sensación con una app nativa. El trabajo de cómputo pesado — procesamiento de imágenes, reconocimiento de QR, OCR, inferencia de modelos — puede empujarse a la capa nativa y el resultado vuelve por el mismo canal. Los plugins nativos existen precisamente para romper los límites del WebView y alcanzar el poder del hardware a la altura de lo nativo.
Dónde se muestra la brecha
| Capacidad | H5 en WebView | Runtime de mini-programa (puente nativo) |
|---|---|---|
| Pagos | Caja externa o redirección, flujo partido | Pago nativo en contexto en una llamada |
| Ubicación | navigator.geolocation, gruesa, suele fallar | getLocation precisa, revisada por plataforma |
| Cámara y escaneo | getUserMedia restringido, a menudo bloqueado | chooseImage y scanCode nativos |
| Bluetooth y NFC | No disponible o muy limitado | Módulos de puente nativo |
| Identidad | Saltos OAuth y toques manuales | login más número de teléfono en un toque |
| Biometría | Nada en la web | Autenticación nativa por hardware |
El patrón se repite en cada plataforma que lanza un runtime de mini-programa: el puente es lo que convierte el web puede hacerlo más o menos en el programa simplemente lo hace.
Por qué una superficie vale más que negociar por página
Una sola superficie de API revisada significa que un desarrollador escribe wx.requestPayment una vez y funciona en todos los dispositivos y apps anfitrionas, en lugar de mantener un laberinto de degradaciones del navegador, firmas JS-SDK y listas blancas de dominio. También significa que la plataforma puede aplicar política en el límite: las capacidades se otorgan por revisión, no por quien sirve el documento, que es exactamente el modelo de confianza que necesita una super-app.
Cómo lo aplica Cross Mini App
Cross Mini App da a los programas un puente nativo que expone pago, ubicación, cámara, conectividad e identidad mediante una superficie consistente estilo wx.*, validada contra la política antes de ejecutarse. Tu código llama a una capacidad; el runtime la mapea al módulo nativo correcto en el dispositivo donde corre. Obtienes poder nativo sin escribir código nativo, y el usuario obtiene un flujo que no se cae por las grietas.
Esta es la diferencia entre pedir prestadas las llaves del navegador y sostener las propias: una espera que la puerta abra; la otra la gira.
Fuentes
- CSDN Q&A — Por qué el H5 en WebView falla en cámara y ubicación mientras el mini-programa tiene éxito
- PHP.cn — Diferencias centrales entre mini-programas y H5 en entorno, rendimiento y permisos de API
- DuNiao Tech — Desarrollo de plugins nativos: llamar capacidades nativas iOS y Android desde mini-programas
- CSDN Blog — H5 vs mini-programa, de principios a selección: el límite de permisos de API