Ionic Capacitor: Guía Completa de Plugins Nativos
8 de diciembre de 2025
Osman Jimenez
Ionic Capacitor Desarrollo Móvil
Accediendo a Funcionalidades Nativas con Capacitor
Capacitor es el puente entre tu aplicación web y las capacidades nativas del dispositivo. Aprende a usar los plugins más importantes para crear aplicaciones móviles completas.
Plugins Esenciales
1. Camera - Captura de Fotos
import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
async takePicture() {
const image = await Camera.getPhoto({
quality: 90,
allowEditing: true,
resultType: CameraResultType.Uri,
source: CameraSource.Camera
});
this.imageUrl = image.webPath;
}2. Geolocation - Ubicación GPS
import { Geolocation } from '@capacitor/geolocation';
async getCurrentPosition() {
const coordinates = await Geolocation.getCurrentPosition();
console.log('Lat:', coordinates.coords.latitude);
console.log('Lng:', coordinates.coords.longitude);
}
// Watch position
const watchId = await Geolocation.watchPosition({}, (position) => {
console.log('Nueva posición:', position);
});3. Storage - Almacenamiento Local
import { Preferences } from '@capacitor/preferences';
// Guardar datos
await Preferences.set({
key: 'user',
value: JSON.stringify(userData)
});
// Leer datos
const { value } = await Preferences.get({ key: 'user' });
const user = JSON.parse(value);
// Eliminar
await Preferences.remove({ key: 'user' });4. Push Notifications
import { PushNotifications } from '@capacitor/push-notifications';
async initPushNotifications() {
// Solicitar permisos
let permStatus = await PushNotifications.checkPermissions();
if (permStatus.receive === 'prompt') {
permStatus = await PushNotifications.requestPermissions();
}
if (permStatus.receive === 'granted') {
await PushNotifications.register();
}
// Escuchar eventos
PushNotifications.addListener('registration', (token) => {
console.log('Token:', token.value);
});
PushNotifications.addListener('pushNotificationReceived', (notification) => {
console.log('Notificación recibida:', notification);
});
}Plugins Avanzados
5. Filesystem - Manejo de Archivos
import { Filesystem, Directory } from '@capacitor/filesystem';
// Escribir archivo
await Filesystem.writeFile({
path: 'secrets/text.txt',
data: 'Contenido del archivo',
directory: Directory.Documents
});
// Leer archivo
const contents = await Filesystem.readFile({
path: 'secrets/text.txt',
directory: Directory.Documents
});
// Listar archivos
const result = await Filesystem.readdir({
path: 'secrets',
directory: Directory.Documents
});6. Network - Estado de Conexión
import { Network } from '@capacitor/network';
const status = await Network.getStatus();
console.log('Conectado:', status.connected);
console.log('Tipo:', status.connectionType);
Network.addListener('networkStatusChange', (status) => {
console.log('Estado de red cambió:', status);
});Creando un Plugin Personalizado
// src/plugins/my-plugin.ts
import { registerPlugin } from '@capacitor/core';
export interface MyPluginPlugin {
echo(options: { value: string }): Promise<{ value: string }>;
}
const MyPlugin = registerPlugin('MyPlugin');
export default MyPlugin; Mejores Prácticas
- Manejo de Permisos: Siempre verifica y solicita permisos antes de usar funcionalidades nativas
- Detección de Plataforma: Usa Capacitor.getPlatform() para código específico
- Fallbacks Web: Implementa alternativas para la web cuando sea posible
- Testing: Prueba en dispositivos reales, no solo emuladores
- Actualización: Mantén Capacitor y plugins actualizados
Conclusión
Capacitor hace que acceder a funcionalidades nativas sea simple y directo. Con estos plugins puedes crear aplicaciones móviles completas que aprovechan todo el potencial del dispositivo, manteniendo una base de código compartida entre plataformas.