Salta al contenuto principale
@capgo/capacitor-attività in tempo reale Interfaccia utente e sistema Sorgente aperta

Attività in tempo reale Plugin Capacitor

Gestisci le attività live iOS e le layout dell'isola dinamica con i modelli JSON guidati da Capacitor

Installa

bun add @capgo/capacitor-live-activities bunx cap sync
npm, pnpm o yarn
  • npm install @capgo/capacitor-live-activities
  • pnpm add @capgo/capacitor-live-activities
  • yarn add @capgo/capacitor-live-activities

Guida

Come utilizzare le attività in tempo reale in Capacitor

Utilizzo di @capgo/capacitor-live-activities

Interfaccia del plugin Capacitor per Live Activities per iOS.

Installa

bun add @capgo/capacitor-live-activities
bunx cap sync

Impostazione iOS

La installazione e sincronizzazione del plugin non creano l'interfaccia nativa delle attività in tempo reale. Prima di chiamare startActivity, configura ActivityKit in Xcode:

  1. Esegui bunx cap open ios.
  2. Esegui Estensione del widget seleziona e abilita Includi attività in tempo reale.
  3. Imposta i target di distribuzione per l'app e l'estensione del Widget su iOS 16.1 o successivo.
  4. Assicurati che l'estensione sia integrata nell'app principale.
  5. Esegui ActivityConfiguration registrato nell'estensione's WidgetBundleCon Live Update, schermo bloccato e tutte le presentazioni dell'isola dinamica.
  6. Esegui NSSupportsLiveActivities alla destinazione app principale Info.plist.
<key>NSSupportsLiveActivities</key>
<true/>

Aggiungere solo il target non è sufficiente. L'app nativa o il plugin devono chiamare le API di ActivityKit per richiesta, aggiornamento e fine. L'estensione del widget deve contenere SwiftUI code in grado di decodificare e visualizzare lo stesso. ActivityAttributes e stato e stato dello stato del contenuto utilizzato da quelle chiamate. Includi i modelli condivisi di ActivityKit in entrambi i target dell'app principale e dell'estensione Widget. La plantilla di attività Live generata da Xcode non rende automaticamente i layout JSON passati 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 Gruppi App abilità di estendere la capacità al target dell'app principale e all'estensione Widget. Abilita lo stesso gruppo su entrambi i target utilizzando l'identificatore esatto previsto dal plugin:

group.<MAIN_APP_BUNDLE_ID>.liveactivities

Estensioni delle attività in tempo reale non possono accedere a rete. Scarica le immagini remote nell'app principale, salvale nel gruppo App condiviso con saveImagee immagini salvate possono essere poi richiamate nella layout. Gli asset inclusi nel bundle devono essere destinati alla destinazione Widget Extension.

Collegamenti Profondi e Aggiornamenti Push

  • Registra ogni schema di URL personalizzato utilizzato da behavior.widgetUrl Ovvero tapUrl sotto l'applicazione principale di destinazione Informazioni > Tipi di URL impostazioni.
  • Per aggiornamenti server-driven, aggiungi il Notifiche Push abilità e implementa il trattamento del token di ActivityKit con APNs.
  • Aggiungi NSSupportsLiveActivitiesFrequentUpdates Aggiungi solo quando l'app richiede aggiornamenti di push di ActivityKit frequenti.

Abilitando la capacità di notifiche Push da solo non è sufficiente; le aggiornamenti server-driven richiedono un trattamento token nativo e un backend APNs.

ActivityKit limita i dati di Live Activity statici e dinamici a 4 KB. L'Isola Dinamica è visibile solo su dispositivi supportati; gli altri dispositivi utilizzano la presentazione della schermata di blocco.

Cosa Espongono Queste Funzionalità

  • areActivitiesSupported - Verifica se le attività in tempo reale sono supportate su questo dispositivo. Richiede iOS 16.1+ e supporto del dispositivo.
  • startActivity - Avvia una nuova attività in tempo reale con il layout e i dati specificati.
  • updateActivity - Aggiorna un'attività in tempo reale esistente con nuovi dati.
  • endActivity - Termina un'attività in tempo reale.

Esempio di utilizzo

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 un'attività in tempo reale nuova 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

Continua da Utilizzo @capgo/capacitor-attività-in-tempo-reale

If stai utilizzando Utilizzando @capgo/capacitor-live-attività per pianificare il comportamento di media e interfaccia nativa, collega @capgo/capacitor-live-attività per i dettagli di implementazione in @capgo/capacitor-live-attività, Getting Started per i dettagli di implementazione in Avvio, 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 Utilizzare @capgo/capacitor-navigazione-nativa.

FAQ

Domande frequenti sul plugin Attività vive

How installo il plugin delle attività in tempo reale in un'app Capacitor?

Esegui &quot;bun add @capgo/capacitor-live-activities&quot; (o &quot;npm install @capgo/capacitor-live-activities&quot;), quindi esegui &quot;bunx cap sync&quot; affinché i progetti iOS e Android recuperino le native code. Importalo da &quot;@capgo/capacitor-live-activities&quot; nella tua app code.

Funziona @capgo/capacitor-live-activities con React, Vue e Angular?

Sì. Le attività in tempo reale sono un pacchetto Capacitor, quindi funzionano con qualsiasi framework web che esegue all'interno di Capacitor, compresi Ionic, React, Vue, Angular, Svelte e JavaScript puro.

Qual è la versione di Capacitor supportata da @capgo/capacitor-live-activities?

Il plugin Capgo segue la versione maggiore di Capacitor: utilizza la versione maggiore del plugin che corrisponde alla tua versione maggiore di Capacitor (ad esempio plugin v8 con Capacitor 8). La tabella di compatibilità nel README del GitHub elenca le versioni mantenute.

È gratuito e open source @capgo/capacitor-live-activities?

Sì. Il codice sorgente code è pubblico su GitHub all'indirizzo https://github.com/Cap-go/capacitor-live-activities/ e il pacchetto è gratuito per l'installazione da npm. I segnalazioni di bug e pull request sono accetti.

Posso aggiornare code che utilizza le attività in tempo reale senza una revisione dell'App Store?

L'installazione o l'aggiornamento del plugin modifica le native code, quindi richiede una nuova costruzione dello store. Dopo di che, le modifiche JavaScript, HTML e CSS che chiamano il plugin possono essere spediti immediatamente con Capgo live updates.

Invia modifiche alle attività in tempo reale senza attendere la revisione dell'app.

Una volta che il plugin è presente nella tua store build, le Capgo aggiornamenti in tempo reale inviano i cambiamenti JavaScript, HTML e CSS agli utenti in pochi minuti.

Inizia con Capgo