Primeros pasos
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-app-intents`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/app-intents/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Instalar
Sección titulada “Instalación”Puedes usar nuestro setup asistido por IA para instalar el plugin. Añade las skills de Capgo a tu herramienta de IA con el siguiente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsLuego usa el siguiente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-app-intents` plugin in my project.Para una configuración manual, instala el paquete y sincroniza los proyectos nativos:
npm install @capgo/capacitor-app-intentsnpx cap syncImportar
Sección titulada “Importar”import { CapgoAppIntents, drainPendingInvocations, useAppIntentsListener,} from '@capgo/capacitor-app-intents';Gestiona invocaciones (seguro para cold starts)
Sección titulada “Gestionar invocaciones (seguro para cold start)”Registra un listener antes de vaciar la cola de pendientes para que no se pierdan Siri, Shortcuts, Spotlight ni las quick actions que se ejecuten durante el inicio del WebView.
const handleInvocation = async (invocation) => { console.log(invocation.name, invocation.params, invocation.source);};
await useAppIntentsListener(handleInvocation);useAppIntentsListener adjunta appIntentInvoked y luego vacía los elementos pendientes. También puedes llamar a getPendingInvocations() y removePendingInvocation() manualmente si prefieres un control explícito.
Frases de Siri (codegen)
Sección titulada “Siri phrases (codegen)”AppShortcut las frases y los nombres de SF Symbol deben ser literales de tiempo de compilación en Swift. Configura app-shortcuts.config.json en el repo de tu app y genera Swift para tu iOS app target:
node node_modules/@capgo/capacitor-app-intents/scripts/generate-app-shortcuts.mjs \ --config app-shortcuts.config.json \ --output ios/App/App/CapgoGeneratedAppShortcuts.swiftVincula el paquete SPM del plugin al target de la app para CapgoDispatchAppIntent se resuelve. En Capacitor 8, reenvía las quick actions de SceneDelegate y las actividades continuas de Spotlight con CapgoAppIntentsLifecycle (ver el repo del plugin docs/ios-scene-integration.md).
capacitor.config
Sección titulada “capacitor.config”plugins: { CapgoAppIntents: { appGroupId: 'group.your.app', spotlightDomainIdentifier: 'your.app.bundle', },},Resumen de API
Sección titulada “Resumen de API”getPendingInvocations
Sección titulada “getPendingInvocations”Devuelve las invocaciones en cola antes de que JavaScript estuviera listo.
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
const result = await CapgoAppIntents.getPendingInvocations();console.log(result);removePendingInvocation
Sección titulada “removePendingInvocation”Elimina una invocación pendiente después de que tu handler la procese.
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
await CapgoAppIntents.removePendingInvocation({ id: 'id-123' });setEntityCatalog
Sección titulada “setEntityCatalog”Persiste un catálogo de entidades para un string de tipo dado.
Permite usar parámetros de entidad en Siri y Shortcuts sin escribir Swift por cada fila.
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
await CapgoAppIntents.setEntityCatalog({ type: 'type', entries: [ { id: 'id-123', title: 'Hello from Capacitor', }, ],});setHomeScreenShortcutItems
Sección titulada “setHomeScreenShortcutItems”Reemplaza las acciones rápidas de la pantalla de inicio (UIApplicationShortcutItems).
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
await CapgoAppIntents.setHomeScreenShortcutItems({ items: [ { type: 'type', title: 'Hello from Capacitor', }, ],});indexSpotlightEntities
Sección titulada “indexSpotlightEntities”Indexa elementos de Spotlight para el dominio de tu app.
Usos CSSearchableItem en iOS 16 y versiones posteriores. En iOS 18 y posteriores también dona
IndexedEntity valores a través de indexAppEntities y associateAppEntity.
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
await CapgoAppIntents.indexSpotlightEntities({ entities: [ { id: 'id-123', title: 'Hello from Capacitor', actionName: 'action', }, ],});removeSpotlightEntities
Sección titulada “removeSpotlightEntities”Elimina elementos de Spotlight por id.
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
await CapgoAppIntents.removeSpotlightEntities({ ids: ['ids'] });performAppleSchemaTemplate
Sección titulada “performAppleSchemaTemplate”Encola un handler de JavaScript para una plantilla de esquema de Apple en fase alpha.
Esto no llama a APIs privadas de Mail o de esquemas del sistema. Solo encola una
invocación (por ejemplo appleSchemaMailCreateDraft) para que tu app code la gestione.
import { CapgoAppIntents } from '@capgo/capacitor-app-intents';
const result = await CapgoAppIntents.performAppleSchemaTemplate({ template: 'mail_create_draft', params: {},});console.log(result);Referencia de tipos
Sección titulada “Referencia de tipos”AppIntentInvocation
Sección titulada “AppIntentInvocation”Una invocación pendiente de tipo App Intent esperando JavaScript.
export interface AppIntentInvocation { /** * Stable id for this queued invocation. * * @since 0.1.0 */ id: string;
/** * Handler name your JavaScript listens for. * * @since 0.1.0 */ name: string;
/** * Parameters passed from Siri, Shortcuts, Spotlight, or quick actions. * * @since 0.1.0 */ params: Record<string, unknown>;
/** * Origin of the invocation. * * @since 0.1.0 */ source: AppIntentInvocationSource;
/** * Unix timestamp in milliseconds when the invocation was queued. * * @since 0.1.0 */ createdAt: number;}EntityCatalogEntry
Sección titulada “EntityCatalogEntry”Una fila en un catálogo de entidades en runtime usado por Siri y parámetros de Shortcuts.
export interface EntityCatalogEntry { /** * Unique id within the catalog type. * * @since 0.1.0 */ id: string;
/** * Primary label shown in Shortcuts and Siri. * * @since 0.1.0 */ title: string;
/** * Optional subtitle. * * @since 0.1.0 */ subtitle?: string;
/** * Optional extra metadata forwarded to JavaScript when the entity is chosen. * * @since 0.1.0 */ metadata?: Record<string, unknown>;}HomeScreenShortcutItem
Sección titulada “HomeScreenShortcutItem”Elemento de acción rápida en la Home Screen.
export interface HomeScreenShortcutItem { /** * Stable type string delivered to JavaScript. * * @since 0.1.0 */ type: string;
/** * Visible title under the icon. * * @since 0.1.0 */ title: string;
/** * Optional subtitle. * * @since 0.1.0 */ subtitle?: string;
/** * Optional SF Symbol name. * * @since 0.1.0 */ iconName?: string;
/** * Optional params merged into the invocation. * * @since 0.1.0 */ params?: Record<string, unknown>;}SpotlightEntity
Sección titulada “SpotlightEntity”Entidad de Spotlight para búsquedas.
export interface SpotlightEntity { /** * Unique id within your app domain. * * @since 0.1.0 */ id: string;
/** * Title shown in Spotlight. * * @since 0.1.0 */ title: string;
/** * Optional description. * * @since 0.1.0 */ description?: string;
/** * Optional keywords. * * @since 0.1.0 */ keywords?: string[];
/** * Action name delivered when the result is opened. * * @since 0.1.0 */ actionName: string;
/** * Optional params merged into the invocation. * * @since 0.1.0 */ params?: Record<string, unknown>;}AppleSchemaTemplate
Sección titulada “AppleSchemaTemplate”Identificadores de plantillas de esquema Alpha de Apple incluidos en el plugin.
export type AppleSchemaTemplate = 'mail_create_draft';AppIntentInvokedEvent
Sección titulada “AppIntentInvokedEvent”export interface AppIntentInvokedEvent { /** * The invocation that was just queued or replayed to listeners. * * @since 0.1.0 */ invocation: AppIntentInvocation;}AppIntentInvocationSource
Sección titulada “AppIntentInvocationSource”Origen de la invocación.
export type AppIntentInvocationSource = 'app_intent' | 'spotlight' | 'quick_action' | 'apple_schema';Fuente de verdad
Sección titulada “Fuente de verdad”Esta página se genera a partir del plugin src/definitions.ts. Vuelve a ejecutar el sync cuando el API público cambie en upstream.