Saltar al contenido

Comenzando

  1. Instalar el paquete

    Ventana de terminal
    npm i @capgo/capacitor-screen-recorder
  2. Sincronizar con proyectos nativos

    Ventana de terminal
    npx cap sync
  3. Configurar permisos

    Agrega descripciones de uso a tu Info.plist:

    <key>NSMicrophoneUsageDescription</key>
    <string>To record audio with screen recording</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>To save screen recordings</string>

    Agrega permisos a tu AndroidManifest.xml:

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

Importa el plugin y usa sus métodos para grabar la pantalla:

import { ScreenRecorder } from '@capgo/capacitor-screen-recorder';
// Start recording
const startRecording = async () => {
try {
await ScreenRecorder.start();
console.log('Recording started');
} catch (error) {
console.error('Failed to start recording:', error);
}
};
// Stop recording
const stopRecording = async () => {
try {
const result = await ScreenRecorder.stop();
console.log('Recording saved to:', result.videoUrl);
// You can now use the video URL
// For example, share it or play it back
} catch (error) {
console.error('Failed to stop recording:', error);
}
};
// Check if recording is supported
const checkSupport = async () => {
const { value } = await ScreenRecorder.isSupported();
console.log('Screen recording supported:', value);
};
// Check if currently recording
const checkRecordingStatus = async () => {
const { value } = await ScreenRecorder.isRecording();
console.log('Currently recording:', value);
};

Inicia la grabación de pantalla.

await ScreenRecorder.start();

Detiene la grabación y devuelve la ruta del archivo de video.

interface RecordingResult {
videoUrl: string;
}
const result = await ScreenRecorder.stop();

Verifica si la grabación de pantalla es compatible con el dispositivo.

const { value } = await ScreenRecorder.isSupported();
// Returns: { value: boolean }

Verifica si la grabación de pantalla está actualmente activa.

const { value } = await ScreenRecorder.isRecording();
// Returns: { value: boolean }
// iOS-specific options
const startWithOptions = async () => {
await ScreenRecorder.start({
// iOS only options
recordAudio: true,
microphoneAudio: true,
showIOSNotification: true,
notificationText: "Recording in progress..."
});
};
import { ScreenRecorder } from '@capgo/capacitor-screen-recorder';
import { Share } from '@capacitor/share';
export class RecordingService {
private isRecording = false;
async toggleRecording() {
if (this.isRecording) {
await this.stopRecording();
} else {
await this.startRecording();
}
}
private async startRecording() {
try {
// Check if supported
const { value: isSupported } = await ScreenRecorder.isSupported();
if (!isSupported) {
throw new Error('Screen recording not supported');
}
// Start recording
await ScreenRecorder.start();
this.isRecording = true;
console.log('Recording started');
} catch (error) {
console.error('Failed to start recording:', error);
throw error;
}
}
private async stopRecording() {
try {
const result = await ScreenRecorder.stop();
this.isRecording = false;
console.log('Recording saved:', result.videoUrl);
// Option to share the recording
await this.shareRecording(result.videoUrl);
} catch (error) {
console.error('Failed to stop recording:', error);
throw error;
}
}
private async shareRecording(videoUrl: string) {
try {
await Share.share({
title: 'Screen Recording',
text: 'Check out my screen recording!',
url: videoUrl,
dialogTitle: 'Share Recording'
});
} catch (error) {
console.error('Failed to share recording:', error);
}
}
}
  1. Verificar compatibilidad antes de usar

    const { value } = await ScreenRecorder.isSupported();
    if (!value) {
    // Hide recording feature or show alternative
    }
  2. Manejar los permisos correctamente En iOS, el sistema solicitará automáticamente el permiso. En Android, asegúrate de solicitar los permisos necesarios.

  3. Proporcionar retroalimentación al usuario Muestra indicadores claros cuando la grabación esté activa:

    let recordingInterval: any;
    const startRecording = async () => {
    await ScreenRecorder.start();
    // Show recording indicator
    recordingInterval = setInterval(() => {
    // Update UI to show recording duration
    }, 1000);
    };
    const stopRecording = async () => {
    clearInterval(recordingInterval);
    await ScreenRecorder.stop();
    };
  4. Manejar interrupciones

    import { App } from '@capacitor/app';
    App.addListener('appStateChange', async ({ isActive }) => {
    if (!isActive) {
    // Consider stopping recording when app goes to background
    const { value } = await ScreenRecorder.isRecording();
    if (value) {
    await ScreenRecorder.stop();
    }
    }
    });
  • Requiere iOS 11.0+
  • Usa el framework ReplayKit
  • El sistema muestra el indicador de grabación en la barra de estado
  • El usuario debe confirmar el inicio de la grabación
  • Requiere Android 5.0 (API 21)+
  • Usa la API MediaProjection
  • Muestra una notificación durante la grabación
  • Algunos dispositivos pueden tener limitaciones específicas del fabricante
  • No compatible con la plataforma web
  • Devolverá isSupported: false
  1. La grabación no se inicia

    • Asegúrate de que todos los permisos estén otorgados
    • Verifica si otra aplicación ya está grabando
    • Verifica que el dispositivo admita la grabación de pantalla
  2. Sin audio en la grabación

    • Verifica los permisos del micrófono
    • Asegúrate de que la opción recordAudio esté habilitada
    • Algunos dispositivos pueden no admitir la grabación de audio del sistema
  3. Archivo de video no encontrado

    • Verifica los permisos de archivos
    • Asegúrate de tener suficiente espacio de almacenamiento
    • Verifica que la URL del video devuelta sea válida