Guida
Tutorial sulle attività in tempo reale
Utilizzo di @capgo/capacitor-attività in tempo reale
Capacitor Plugin per attività in tempo reale per la gestione delle attività iOS.
Installa
bun add @capgo/capacitor-live-activities
bunx cap sync
Configurazione iOS
La sincronizzazione del plugin non crea l'interfaccia nativa delle attività in tempo reale. Prima di chiamare startActivityConfigura ActivityKit in Xcode:
- Esegui
bunx cap open ios. - Aggiungi un Estensione del widget obiettivo e abilita Includi attività in tempo reale.
- Assicurati che l'app e l'estensione del widget siano configurate per iOS 16.1 o successiva.
- Assicurati che l'estensione sia incorporata nell'app principale.
- Tieni un
ActivityConfigurationregistrato nell'estensione'WidgetBundle, con schermo bloccato e tutte le presentazioni dell'isola dinamica. - Aggiungi
NSSupportsLiveActivitiesalla configurazione di destinazione dell'app principale'Info.plist.
<key>NSSupportsLiveActivities</key>
<true/>
Aggiungere solo l'obiettivo non è sufficiente. L'app nativa o il plugin devono chiamare le API di ActivityKit richiesta, aggiornamento e fine. L'estensione del widget deve contenere SwiftUI code che possono decodificare e rendere le stesse ActivityAttributes e lo stato dei contenuti utilizzato da quelle chiamate. Includi i modelli condivisi ActivityKit in entrambi i target dell'app principale e dell'estensione Widget. La plantilla di attività live generata da Xcode non rende automaticamente le strutture JSON passate a questo plugin; l'estensione richiede inoltre un renderer di layout nativo compatibile.
Immagini condivise
Quando si utilizzano i metodi di gestione delle immagini, aggiungi la Gruppi di App abilità al target dell'app principale e dell'estensione Widget. Abilita lo stesso gruppo su entrambi i target utilizzando l'identificatore esatto previsto dal plugin:
group.<MAIN_APP_BUNDLE_ID>.liveactivities
Le estensioni delle attività live non possono accedere a rete. Scarica le immagini remote nell'app principale, salvale nel gruppo App condiviso con saveImagee poi riferisciti all'immagine salvata dal layout. Gli asset incorporati devono anche appartener al target dell'estensione Widget.
Collegamenti profondi e Aggiornamenti Push
- Registra qualsiasi schema di URL personalizzato utilizzato da
behavior.widgetUrlotapUrlcontext testo di frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `alternatives_cta_questions`). Pagina/area: pagina di confronto delle alternative di Capgo per le live-update. Ruolo: lungo paragrafo di marketing o legale. Visto in: pagina alternatives.astro. Preservare i termini del prodotto e del marchio Capgo e dei developer esattamente. Chiave del messaggio `alternatives_cta_questions` (Domande per la CTA delle alternative). | Testo di frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `appflow_cta_questions`). Pagina/area: pagina di confronto e migrazione di Appflow. Ruolo: lungo paragrafo di marketing o legale. Visto in: pagina ionic-appflow.astro. Preservare i termini del prodotto e del marchio Capgo e dei developer esattamente. Chiave del messaggio `appflow_cta_questions` (Domande per la CTA di Appflow). | Testo di frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `capwesome_cta_questions`). Pagina/area: pagina di confronto di Capawesome. Ruolo: lungo paragrafo di marketing o legale. Visto in: pagina capwesome.astro. Preservare i termini del prodotto e del marchio Capgo e dei developer esattamente. Chiave del messaggio `capwesome_cta_questions` (Domande per la CTA di Capawesome). | Pagina/area: pagina di servizi di consulenza. Ruolo: sottotitolo o didascalia di sezione. Visto in: pagina consulting.astro. Preservare i termini del prodotto e del marchio Capgo e dei developer esattamente. Chiave del messaggio `consulting_faq_subtitle` (Sottotitolo FAQ dei servizi di consulenza). | Pagina/area: pagina di confronto e migrazione di Appflow. Ruolo: breve etichetta UI o elemento di navigazione. Visto in: pagina ionic-appflow.astro, pagina ionic-enterprise-plugins.astro, pagina soluzioni/ionic-enterprise-plugins.astro. Chiave del messaggio `appflow_plugins_or` (Appflow Plugins o). impostazioni. - Per aggiornamenti server-driven, aggiungi il Push Notifications context
- abilita la capacità e implementa il gestione dei token di ActivityKit con APNs.
NSSupportsLiveActivitiesFrequentUpdatesAggiungi
Sii sicuro di aggiungerlo solo quando l'app richiede aggiornamenti di ActivityKit push frequenti.
Abilitare la capacità di Push Notifications da solo non è sufficiente; gli aggiornamenti server-driven richiedono una gestione di token nativa e un backend APNs.
ActivityKit limita i dati di Live Activity statici e dinamici combinati a 4 KB. L'Isola Dinamica è visibile solo su modelli di dispositivi supportati; gli altri dispositivi utilizzano la presentazione della schermata di blocco.
areActivitiesSupportedCos'è questo Plugin che EsponestartActivity- Controlla se le attività in tempo reale sono supportate su questo dispositivo. Richiede iOS 16.1+ e supporto del dispositivo.updateActivity- Avvia una nuova attività in tempo reale con il layout specificato e i dati specificati.endActivity- Termina un'attività in tempo reale.
Utilizzo di esempio
areActivitiesSupported
Verifica se le attività in tempo reale sono supportate su questo dispositivo. Richiede iOS 16.1+ e supporto del 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
Inizia una nuova attività in tempo reale con il layout specificato e i dati.
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
Aggiorna un'attività in tempo reale esistente con nuovi dati.
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
Termina un'attività in tempo reale.
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
});
Riferimento completo
- GitHub: https://github.com/Cap-go/capacitor-live-activities/
- Dal documento: /docs/plugins/live-activities/
Continua da qui: Utilizzo di @capgo/capacitor-live-activities
Se stai utilizzando Utilizzando @capgo/capacitor-live-attività per pianificare il comportamento di media e interfaccia nativa, connettilo con @capgo/capacitor-live-attività per i dettagli di implementazione in @capgo/capacitor-live-attività, Avvio rapido per i dettagli di implementazione in Avvio rapido, Utilizzando @capgo/capacitor-player-video per la capacità nativa in Utilizzando @capgo/capacitor-player-video, @capgo/capacitor-player-video per i dettagli di implementazione in @capgo/capacitor-player-video, e Utilizzando @capgo/capacitor-navigazione-nativa per la capacità nativa in Utilizzando @capgo/capacitor-navigazione-nativa.