Adaptador de Billetera Móvil (MWA)
Conecta aplicaciones React Native a billeteras móviles para autorizar y firmar.
Receta
npm install @solana-mobile/mobile-wallet-adapter-protocol-web3js
# Prefiere enlaces MWA compatibles con kit en nuevas aplicaciones junto con @solana/kit@7.0.0Cuándo usar esto:
- DApps de Solana en React Native / Expo para Android.
- Destinos de dispositivos Seeker y Saga.
- Cualquier flujo móvil que necesite una aplicación de billetera externa.
Ejemplo de Trabajo
import { transact } from "@solana-mobile/mobile-wallet-adapter-protocol-web3js";
async function connectMobileWallet() {
await transact(async (wallet) => {
const auth = await wallet.authorize({
cluster: "devnet",
identity: { name: "Mi dApp", uri: "https://example.com", icon: "favicon.ico" },
});
console.log("cuentas", auth.accounts);
// firma transacciones con wallet.signTransactions durante la misma sesión
});
}Lo que esto demuestra:
transactdelimita la sesión de la billetera a la función de callback.- Metadatos de identidad mostrados en la interfaz de usuario de aprobación de la billetera.
- El clúster debe coincidir con el endpoint RPC en la aplicación.
Análisis Profundo
Cómo Funciona
- Las intenciones de Android inician la aplicación de billetera y devuelven resultados.
- La autorización de sesión puede persistir entre llamadas a
transactcon un token de autorización almacenado. - El soporte para iOS evoluciona; consulta la documentación de Solana Mobile para conocer el estado actual.
- Empareja con los bytes de transacción de
kitpara firmar.
Errores Comunes
- Pruebas solo en emulador: las intenciones fallan sutilmente. Solución: laboratorio de dispositivos físicos.
- Campos de identidad faltantes: la billetera rechaza la autorización. Solución: completar nombre/uri/icono.
- Desajuste de clúster: errores de simulación. Solución:
devneten todas partes en desarrollo. - Callback
transactlargo: tiempo de espera de la billetera. Solución: minimizar el trabajo dentro de la sesión. - Asumir APIs de extensión: MWA no es
window.solana.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Billetera integrada en la aplicación | Incorporación de consumidores | Usuarios avanzados de billeteras externas |
| Web móvil + deep link de billetera | Sin instalación de aplicación | Necesidades de rendimiento nativo |
Preguntas Frecuentes
App Router?
Proveedores en layout.tsx del cliente; las páginas mezclan componentes de servidor y cliente.
Secretos?
Solo variables de entorno del servidor para keypairs; NEXT_PUBLIC_ para URLs RPC.
kit 7.0.0?
Todos los ejemplos usan @solana/kit, no web3.js v1.
Billetera?
Firma solo en componentes del cliente.
Caché?
Revalida las lecturas on-chain cuidadosamente: la cadena es la fuente de verdad.
Acciones?
Endpoints HTTPS que devuelven JSON de Acciones de Solana.
Móvil?
Aplicación React Native separada con MWA.
Pruebas?
Surfpool para integración; simula RPC en pruebas unitarias.
Mainnet?
Archivos de entorno y IDs de programa separados.
Errores?
Decodifica los logs de simulación para mensajes dirigidos al usuario.
Relacionado
- Construyendo una DApp Móvil - Configuración de Expo
- Conceptos Básicos de Billetera - conceptos
- Deep Links y Manejo de Sesiones - intenciones
Versiones de Stack: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.