Saltar al contenido

@capgo/capacitor-widget-kit

Crea superficies de WidgetKit y Live Activity desde Capacitor con marcos SVG, temporizadores, hotspots o sincronización full-native del estado del widget

Crea superficies de WidgetKit y Live Activity desde Capacitor con marcos SVG, temporizadores, hotspots o sincronización full-native del estado del widget

Empieza con areActivitiesSupported() y los demás métodos principales detallados abajo.

PlataformaSoporteNotas
iOSSíNativo
AndroidSíNativo
WebNoProtege con Capacitor.getPlatform()

WidgetKit es necesitas un puente para Siri o Shortcuts. Sí que cubre WidgetKit, Live Activities de plantilla con ActivityKit y controles interactivos de iOS mediante LiveActivityIntent types (CapgoTemplateActionIntent, CompleteSetIntent) que actualizan el estado almacenado de la plantilla y añaden al event log (listTemplateEvents / acknowledgeTemplateEvents).

Sí, lo hace necesitas register custom shortcut phrases, AppShortcutsProvider, catálogos de entidades JavaScript, elementos de Spotlight o esquemas de apps de Apple. Usa @capgo/capacitor-app-intents para ello. Para una comparativa completa con herramientas como expo-app-intents, consulta Siri, Shortcuts y widgets.

Demo animada de WidgetKit que muestra el estado y los controles del widget mediante Capacitor
Flujo de la plantilla del widget
ModoIdeal paraAPIs principales
Actividad con plantilla SVGLive Activities o superficies de widgets que se renderizan desde un SVGstartTemplateActivity, performTemplateAction, listTemplateEvents
Sesión de widget full-nativeWidgets renderizados nativamente que requieren estado compartido y tareas asíncronasstartWidgetSession, updateWidgetSession, sendWidgetMessage

Ambos modos pueden coexistir en la misma app. Por ejemplo, una app de entrenamiento puede usar una Live Activity con SVG para controles rápidos de timer y una sesión de widget full-native para un widget de la home con un layout nativo más rico.

Las plantillas SVG incluyen los elementos necesarios para superficies de widgets interactivas:

  • frames mantener variantes SVG con nombre como summary, timer, o details.
  • frameMutations cambiar, alternar o avanzar entre frames tras una acción de hotspot.
  • timerMutations iniciar, pausar, reanudar, alternar, resetear, detener o cambiar la duración del timer.
  • patches actualizar el estado JSON usando valores literales, templates, timestamps, incrementos, toggles o desasignaciones.
  • hotspots mapear áreas de toque a identificadores de acción.
  • listTemplateEvents permite que la app procese acciones de widgets más tarde.

El runtime resuelve placeholders como {{state.title}}, {{timers.rest.remainingText}}, y {{meta.template.kind}} antes de que el native bridge devuelva una superficie para renderizar.

Las sesiones full-native son para widgets que renderizan su propia UI de forma nativa:

  • startWidgetSession crea el estado compartido y los metadatos para el widget nativo code.
  • updateWidgetSession fusiona o reemplaza el estado y marca la sesión como activa de nuevo.
  • stopWidgetSession registra un estado final y marca la sesión como detenida.
  • sendWidgetMessage encola trabajo de app-to-widget o widget-to-app.
  • acknowledgeWidgetMessages marca los mensajes como recibidos.
  • completeWidgetMessage almacena una respuesta o un fallo para jobs asíncronos.

Los mensajes son idempotentes al completarse: reintentar un mensaje completado o fallido devuelve el resultado existente en lugar de sobrescribirlo.

MétodoDescripción
areActivitiesSupportedComprueba si el bridge de actividad de plantilla nativa puede ejecutarse en el dispositivo actual.
startTemplateActivityPersiste una actividad de plantilla SVG e inicia el bridge nativo de Live Activity.
updateTemplateActivityReemplaza la definición de la actividad, el estado o la URL de apertura.
endTemplateActivityFinaliza una actividad en ejecución y, opcionalmente, persiste un último snapshot del estado.
performTemplateActionEjecuta parches declarativos, mutaciones de frames, mutaciones de timers y registro de eventos.
getTemplateActivityLee una actividad de plantilla almacenada.
listTemplateActivitiesLista todas las actividades de plantilla almacenadas.
listTemplateEventsLee los eventos de acción emitidos por las acciones de la plantilla.
acknowledgeTemplateEventsMarca los eventos de la plantilla como procesados.
startWidgetSessionInicia una sesión de widget totalmente nativa respaldada por un estado JSON compartido.
updateWidgetSessionFusiona o reemplaza el estado de sesión de un widget nativo completo.
stopWidgetSessionDetén una sesión de widget totalmente nativa y, opcionalmente, persiste el estado final.
getWidgetSessionLee una sesión completa de widget nativo.
listWidgetSessionsLista todas las sesiones de widget nativo.
sendWidgetMessageEncola un mensaje entre la app y el widget nativo code.
listWidgetMessagesLista los mensajes del bridge en cola.
acknowledgeWidgetMessagesMarca los mensajes del bridge como confirmados.
completeWidgetMessageCompleta o falla un mensaje de bridge asíncrono.
getPluginVersionDevuelve la versión de la implementación de la plataforma.

El plugin también incluye helpers nativos para targets de widgets:

  • CapgoTemplateWidgetBridge resuelve una superficie de plantilla SVG en svg, frameId, hotspots, y metadatos.
  • CapgoTemplateActionIntent conecta botones interactivos del widget iOS con acciones de plantilla.
  • CapgoNativeWidgetBridge carga sesiones y mensajes totalmente nativos desde el code del widget nativo.
  • Los helpers de plantilla de Android ofrecen el mismo receiver de acciones y bridge de widget.

La referencia de API se sincroniza desde src/definitions.ts en el repositorio del plugin.

Si estás usando @capgo/capacitor-widget-kit para planificar la automatización de CI/CD, conéctalo con Uso de @capgo/capacitor-widget-kit para la capacidad nativa en Using @capgo/capacitor-widget-kit, CI/CD de Capgo para el flujo de trabajo del producto en Capgo CI/CD, Native Builds de Capgo para el flujo de trabajo del producto en Capgo Native Builds, Integraciones de Capgo para el flujo de trabajo en Capgo Integrations, y Integración CI/CD para el detalle de implementación en CI/CD Integration.