Rimasun Docs

SDK Flutter 0.2.2

Paquete rimasun_flutter para Android e iOS: el mismo modelo que el SDK web.

Instalar

Descargue el paquete SDK Flutter (Mi cuenta → Descargas), verifique su firma y descomprímalo junto a su app. Trae dos carpetas: rimasun_flutter y terceros/flutter_webrtc (con un parche que evita un cierre de la app en Android al recibir video).

dependencies:
  rimasun_flutter:
    path: ../rimasun_flutter-0.2.2/rimasun_flutter

dependency_overrides:
  flutter_webrtc:
    path: ../rimasun_flutter-0.2.2/terceros/flutter_webrtc

Requisitos: Flutter 3.27 o superior, Dart 3.5. El motor livekit_client va fijado en 2.13.1.

Permisos

PlataformaQué agregar
Android (AndroidManifest.xml)CAMERA, RECORD_AUDIO, MODIFY_AUDIO_SETTINGS, INTERNET, ACCESS_NETWORK_STATE, BLUETOOTH_CONNECT
iOS (Info.plist)NSCameraUsageDescription, NSMicrophoneUsageDescription y, para seguir en segundo plano, UIBackgroundModes → audio, voip

El SDK pide los permisos recién al conectar, no al abrir la app.

Pantalla lista

import 'package:rimasun_flutter/rimasun_flutter.dart';

// 1) Su servidor pide el token a Rimasun (POST /v1/tokens) y se lo entrega a la app.
final cred = RimasunCredencial.desdeJson(respuestaDeSuServidor);

// 2) Pantalla completa de llamada
Navigator.push(context, MaterialPageRoute(builder: (_) => RimasunPantallaLlamada(
  credencial: cred,
  titulo: "Dr(a). Ruiz",
  subtitulo: "Cita N.º 250",
  alTerminar: (duracion) => guardarDuracion(duracion),
)));
ParámetroPor defectoDescripción
credencial—RimasunCredencial de la respuesta del servidor.
titulo, subtitulo, fotoUrl—Datos de la otra persona (la foto solo por https).
conVideotruefalse para voz.
colorPrincipal#2A3C58Color de la inicial y detalles.
alTerminar(Duration)—Al terminar la llamada.
claveCifrado—Cifrado de extremo a extremo. Ver E2EE.
permitirInsegurofalseAcepta ws:// fuera de la red local. Solo pruebas.

RimasunPantallaLlamada.colgarActiva() cuelga desde fuera (p. ej. desde CallKit) y hayLlamadaActiva indica si hay una abierta.

Interfaz propia

final ll = RimasunLlamada()..terminarSiSalenTodos = true;
ll.addListener(() => setState(() {}));
await ll.conectar(cred, conVideo: true);

// ll.estado: RimasunEstado.inactiva | conectando | esperando | enLlamada | reconectando | terminada | error
// ll.videoDe(ll.otro), ll.videoPropio → VideoTrack (VideoTrackRenderer)
// ll.redDe(p): RimasunRed.excelente | buena | debil | sinConexion | desconocida
// ll.alternarMicrofono(), alternarCamara(), cambiarCamara(), alternarAltavoz(), colgar()
// ll.duracion, ll.aviso, ll.error, ll.motivoFin, ll.cifrada
ll.dispose();   // al salir

Credencial

cred.validar() devuelve null o el motivo (formato del token, vencimiento, sala, wss://); cred.valida es su versión booleana. conectar la valida siempre. toString() no muestra el token.

RimasunLlamada.depuracion = true abre el registro detallado del motor (no en producción). Para que el SDK pueda bajar el registro del motor a warning, active en su app hierarchicalLoggingEnabled = true (paquete logging); si no, se mantiene el nivel de su app.

Rimasun · documentación en español · cambios por versión