Guía
Cómo usar Actividades en vivo en Capacitor
Usando @capgo/capacitor-live-activities
Capacitor Plugin de Actividades en vivo de Capacitor para gestionar Actividades en vivo de iOS.
Instalar
bun add @capgo/capacitor-live-activities
bunx cap sync
iOS Setup
Instalando y sincronizando el plugin no crea la interfaz de usuario nativa de Live Activity. Antes de llamar startActivityconfigure ActivityKit en Xcode:
- Ejecutar
bunx cap open ios. - Agregar un Extensión de Widget Extensión de Widget Incluya Actividad en Vivo.
- Establezca los objetivos de despliegue de la aplicación y la extensión de Widget a iOS 16.1 o posterior.
- Asegúrese de que la extensión esté integrada en la aplicación principal.
- Mantén un
ActivityConfigurationregistrado en la extensión'sWidgetBundle, con Pantalla de Bloqueo y todas las presentaciones de Dynamic Island. - Agregar
NSSupportsLiveActivitieshacia la aplicación principal objetivoInfo.plist.
<key>NSSupportsLiveActivities</key>
<true/>
Adding the target alone is not sufficient. The native app or plugin must call ActivityKit's request, update, and end APIs. The Widget Extension must contain SwiftUI code that can decode and render the same ActivityAttributes Agregar el objetivo principal solo no es suficiente. La aplicación nativa o el plugin deben llamar a las API de solicitud, actualización y finalización de ActivityKit. La extensión de Widget debe contener SwiftUI __CAPGO_KEEP_0__ que pueda descodificar y renderizar el mismo
Imagenes Compartidas
Cuando utilices los métodos de gestión de imágenes, agregue App Groups capacidad a la aplicación principal y a los objetivos de la extensión de Widget. Active el mismo grupo en ambos objetivos utilizando el identificador exacto esperado por el plugin:
group.<MAIN_APP_BUNDLE_ID>.liveactivities
capacidad a la aplicación principal y la extensión de Widget. Active el mismo grupo en ambos objetivos utilizando el identificador exacto esperado por el plugin: saveImagey luego refiera la imagen guardada desde la configuración de la vista. Los activos empaquetados también deben pertenecer al objetivo de extensión de la vista.
Enlaces Profundos y Actualizaciones de Aplicación
- Register any custom URL scheme used by
behavior.widgetUrlotapUrlbajo el objetivo principal de la aplicación Información > Tipos de URL o - For server-driven updates, add the Notificaciones de Pulsación habilidad y implementar el manejo de tokens de ActivityKit con APNs.
- o
NSSupportsLiveActivitiesFrequentUpdatessolo cuando la aplicación requiere actualizaciones de push de ActivityKit con frecuencia.
Habilitar la capacidad de notificaciones push en sí no es suficiente; se requieren actualizaciones impulsadas por el servidor y un backend APNs con manejo de tokens nativos.
La ActivityKit limita los datos de Actividad en vivo estáticos y dinámicos a 4 KB. El Isla Dinámica solo está visible en modelos de dispositivos compatibles; otros dispositivos utilizan la presentación de pantalla de bloqueo.
¿Qué Este Plugin Exposa
areActivitiesSupported- Verificar si las Actividades en vivo están soportadas en este dispositivo. Requiere iOS 16.1+ y soporte de dispositivo.startActivity- Iniciar una nueva Actividad en vivo con el diseño especificado y los datos.updateActivity- Actualizar una Actividad en vivo existente con nuevos datos.endActivity- Finalizar una Actividad en vivo.
Uso de Ejemplo
areActivitiesSupported
- Verificar si las Actividades en vivo están soportadas en este dispositivo. Requiere iOS 16.1+ y soporte de dispositivo.
import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';
const { supported, reason } = await CapgoLiveActivities.areActivitiesSupported();
if (supported) {
console.log('Live Activities are supported!');
} else {
console.log('Not supported:', reason);
}
startActivity
- Iniciar una nueva Actividad en vivo con el diseño especificado y los datos.
import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';
const { activityId } = await CapgoLiveActivities.startActivity({
layout: {
type: 'container',
direction: 'horizontal',
children: [
{ type: 'text', content: 'Order #{{orderNumber}}', fontSize: 16, fontWeight: 'bold' },
{ type: 'text', content: '{{status}}', fontSize: 14, color: '#666666' }
]
},
dynamicIslandLayout: {
expanded: {
leading: { type: 'image', source: 'sfSymbol', value: 'box.truck' },
trailing: { type: 'text', content: '{{eta}}' },
center: { type: 'text', content: '{{status}}' },
bottom: { type: 'progress', value: 'progress' }
},
compactLeading: { type: 'image', source: 'sfSymbol', value: 'box.truck' },
compactTrailing: { type: 'text', content: '{{eta}}' },
minimal: { type: 'image', source: 'sfSymbol', value: 'box.truck' }
},
data: {
orderNumber: '12345',
status: 'On the way',
eta: '10 min',
progress: 0.6
}
});
console.log('Started activity:', activityId);
updateActivity
- Actualizar una Actividad en vivo existente con nuevos datos.
import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';
await CapgoLiveActivities.updateActivity({
activityId: 'abc123',
data: {
status: 'Arrived!',
eta: 'Now',
progress: 1.0
},
alertConfiguration: {
title: 'Delivery Update',
body: 'Your order has arrived!'
}
});
endActivity
- Finalizar una Actividad en vivo.
import { CapgoLiveActivities } from '@capgo/capacitor-live-activities';
await CapgoLiveActivities.endActivity({
activityId: 'abc123',
data: { status: 'Delivered' },
dismissalPolicy: 'after',
dismissAfter: Date.now() + 3600000 // 1 hour from now
});
Referencia Completa
- GitHub: https://github.com/Cap-go/capacitor-actividades-en-vivo/
- Documentación: /docs/plugins/actividades-en-vivo/
Sigue adelante desde Usando @capgo/capacitor-actividades-en-vivo
Si estás utilizando Usando @capgo/capacitor-actividades-en-vivo para planificar el comportamiento de medios y interfaz nativa, conecta con @capgo/capacitor-actividades-en-vivo para los detalles de implementación en @capgo/capacitor-actividades-en-vivo Getting Started para los detalles de implementación en Iniciación Usando @capgo/capacitor-reproductor-de-videos para la capacidad nativa en Usando @capgo/capacitor-reproductor-de-videos, @capgo/capacitor-reproductor-de-videos para el detalle de implementación en @capgo/capacitor-reproductor-de-videos, y Usando @capgo/capacitor-navegación-nativa para la capacidad nativa en Usando @capgo/capacitor-navegación-nativa.