Ir al contenido

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.

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.

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.

Inicialízalo una vez, al principio del ciclo de vida de la app:

// iOS
let 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)
// Android
val 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 history

Muestra la interfaz:

RolChat.shared.openChat() // modal
RolChat.shared.openChat(conversationId: id) // a specific conversation
RolChat.shared.openChatInline(view) // inside your own layout
RolChat.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.

  • 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. identify sin 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.

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 message

El 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 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.

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.