SDK móviles
Los SDK móviles son el equivalente del widget web para tus propias apps: tus clientes reciben soporte dentro de la app con el historial completo de conversaciones y notificaciones push, y tus agentes ven esas conversaciones en la misma Bandeja de entrada. No son apps para los agentes de tu equipo; esas son una línea de producto aparte.
Plataformas
Sección titulada «Plataformas»| Plataforma | Lenguaje y entorno | Distribución | Estado |
|---|---|---|---|
| iOS | Swift 5.9+, iOS 15+ | Swift Package Manager, CocoaPods | en desarrollo |
| Android | Kotlin 1.9+, Android 8.0 (API 26)+ | Maven Central | en desarrollo |
| React Native | envuelve los SDK nativos | npm | previsto (beta) |
| Flutter | envuelve los SDK nativos | pub.dev | previsto (beta) |
Los SDK nativos son la referencia; los envoltorios se publican después. Las apps para relojes o televisores y los SDK de escritorio quedan fuera del alcance; para escritorio, usa el widget web.
Qué incluye el SDK
Sección titulada «Qué incluye el SDK»Mensajes de texto, adjuntos, mensajes de voz, imágenes y vídeo, sesiones anónimas e identificadas, temas, avatar y marca personalizados, 40 idiomas, el concierge de IA, historial de conversaciones, contadores de no leídos, notificaciones push, enlaces profundos, llamada con un toque mediante el marcador del teléfono, cola sin conexión con sincronización en segundo plano, desbloqueo biométrico del chat, compatibilidad con VoiceOver y TalkBack, modo oscuro. Tamaño compilado objetivo: 5 MB o menos por plataforma.
Las llamadas WebRTC dentro de la app y el uso compartido de pantalla por parte del cliente llegarán en una versión posterior. La navegación conjunta solo funciona en la web: los sistemas operativos móviles no permiten que un SDK de terceros observe o controle la pantalla.
Interfaz del SDK
Sección titulada «Interfaz del SDK»Inicialízalo una vez, al principio del ciclo de vida de la app:
// iOSlet config = RolChatConfig( siteId: "site_abc123", apiKey: "pk_live_…", // public key - safe to ship in the app region: .eu, // eu / us theme: RolChatTheme(primaryColor: .blue))RolChat.shared.initialize(config: config)// Androidval config = RolChatConfig.Builder() .siteId("site_abc123") .apiKey("pk_live_…") .region(Region.EU) .theme(RolChatTheme(primaryColor = Color.Blue)) .build()RolChat.initialize(context, config)Identifica al usuario cuando inicie sesión y cierra la sesión cuando él la cierre:
RolChat.shared.identify(userId: "user_12345", email: "alice@example.com", name: "Alice", metadata: ["tier": "gold"])RolChat.shared.logout() // on host-app sign-out, or the next user sees this historyMuestra la interfaz:
RolChat.shared.openChat() // modalRolChat.shared.openChat(conversationId: id) // a specific conversationRolChat.shared.openChatInline(view) // inside your own layoutRolChat.shared.close()Callbacks: rolChatDidOpen, rolChatDidClose, rolChatDidReceiveMessage(_:), rolChatDidFailToSend(_:). La API pública es segura en el hilo principal en iOS y en hilos en segundo plano en Android; las conexiones se cierran cuando la app pasa a segundo plano y se reanudan al volver al primer plano.
Sesiones e identidad
Sección titulada «Sesiones e identidad»- Anónima: un ID de sesión del dispositivo guardado en el llavero o en preferencias cifradas sobrevive a las actualizaciones de la app y está ligado al dispositivo, no al usuario. Se elimina tras 90 días de inactividad.
- Identificada: después de
identify, la sesión se promueve y se combina con el historial anónimo del mismo dispositivo cuando no hay ambigüedad. La resolución de identidad entre canales sigue las reglas del grafo de identidad y el consentimiento. - Identificación de confianza: tu backend firma un token con los datos del usuario; el SDK lo envía y RolChat verifica la firma antes de promover la sesión.
identifysin firma funciona, pero ofrece menos confianza.
La clave de API pública de la app es segura por diseño: está limitada al sitio y tiene límites de uso.
Notificaciones push
Sección titulada «Notificaciones push»| Plataforma | Transporte | Lo que aportas |
|---|---|---|
| iOS | APNs | Una clave de autenticación de APNs en el panel de RolChat |
| Android | FCM | El JSON de la cuenta de servicio de FCM |
RolChat.shared.setPushToken(deviceToken, type: .apns)if RolChat.shared.handleNotification(userInfo) { return } // consumed: a chat messageEl texto de las notificaciones se localiza en el servidor al idioma del usuario. Las notificaciones enriquecidas admiten avatar, responder desde la notificación y marcar como leído. El SDK nunca pide permiso para las notificaciones push por su cuenta; llama a requestPushPermission() cuando encaje en tu proceso de incorporación. Para desactivarlas se usa setPushEnabled(false) o los ajustes del sistema operativo; ambas cosas quedan registradas.
Versionado y soporte
Sección titulada «Versionado y soporte»Versionado semántico estricto. Se admiten dos versiones mayores a la vez, con un año para migrar tras una versión mayor. Las versiones menores son mensuales; las correcciones de seguridad se publican de inmediato; las versiones mayores se anuncian con tres meses de antelación. Un SDK obsoleto o sin soporte muestra una advertencia en el registro al arrancar y el panel lo indica en Integraciones.
Privacidad
Sección titulada «Privacidad»Sin seguimiento más allá de lo que actives, las pantallas de consentimiento usan los patrones nativos de la plataforma, y las solicitudes de los interesados según GDPR, CCPA y LGPD cubren las sesiones del SDK como cualquier otro canal. Los adjuntos se comprimen en el dispositivo, se suben a URL firmadas y se analizan en busca de virus antes de que los vean los agentes.