Saltar al contenido

Empezando

  1. Instala el complemento

    Ventana de terminal
    npm i @capgo/capacitor-photo-library
  2. Sincronizar plataformas

    Ventana de terminal
    npx cap sync
  • iOS: actualice Info.plist con NSPhotoLibraryUsageDescription (y NSPhotoLibraryAddUsageDescription si planea guardar medios).
  • Android: Para Android 13+, declara los permisos de foto/video (READ_MEDIA_IMAGES, READ_MEDIA_VIDEO). Capacitor 5 maneja esto automáticamente, pero verifica los manifiestos personalizados.
import { PhotoLibrary } from '@capgo/capacitor-photo-library';
const { state } = await PhotoLibrary.requestAuthorization();
if (state !== 'authorized' && state !== 'limited') {
throw new Error('Photo access denied');
}
import { Capacitor } from '@capacitor/core';
const { assets, hasMore, nextPage } = await PhotoLibrary.getLibrary({
limit: 100,
includeAlbums: false,
thumbnailWidth: 256,
thumbnailHeight: 256,
});
const gallery = assets.map((asset) => ({
id: asset.id,
fileName: asset.fileName,
created: asset.creationDate,
thumbnailUrl: asset.thumbnail
? asset.thumbnail.webPath ?? Capacitor.convertFileSrc(asset.thumbnail.path)
: undefined,
photoUrl: asset.file
? asset.file.webPath ?? Capacitor.convertFileSrc(asset.file.path)
: undefined,
}));

Para recuperar páginas adicionales, llame a PhotoLibrary.getLibrary({ cursor: nextPage }).

const selection = await PhotoLibrary.pickMedia({
selectionLimit: 5,
includeVideos: true,
});
console.log('User selected', selection.assets.length, 'items');

Las miniaturas generadas y las exportaciones se almacenan en el directorio de caché de la aplicación en photoLibrary. Elimínelos con su archivo preferido API cuando necesite recuperar almacenamiento.