Anleitung
Live Activities in Capacitor verwenden
Mit @capgo/capacitor-live-activities
Capacitor Live-Aktivitäten-Plugin-Interface für die Verwaltung von iOS-Live-Aktivitäten.
Installieren
bun add @capgo/capacitor-live-activities
bunx cap sync
iOS-Einrichtung
Die Installation und Synchronisierung des Plugins erzeugen keine native Live-Aktivitäten-Oberfläche. Bevor Sie __CAPGO_KEEP_0__ aufrufen startActivityKonfigurieren Sie ActivityKit in Xcode:
- Starten
bunx cap open ios. - Hinzufügen Widget-Erweiterung Ziel und aktivieren Live-Aktivität einschließen.
- Stellen Sie sicher, dass die App und die Widget-Erweiterung auf iOS 16.1 oder später ausgerichtet sind.
- Ensure the extension is embedded in the main app.
- Bleiben Sie an
ActivityConfigurationregistriert in der ErweiterungWidgetBundleeingetragen, einschließlich des Lock-Screens und aller Dynamic-Island-Anzeigen. - Hinzufügen
NSSupportsLiveActivitieszur Hauptanwendung des ZielsInfo.plist.
<key>NSSupportsLiveActivities</key>
<true/>
Die Zielanwendung alleine ist nicht ausreichend. Die native App oder Plugin muss die ActivityKit-APIs request, update und end aufrufen. Der Widget Extension muss SwiftUI code enthalten, die das gleiche Datenformat wie die von ActivityKit genutzten Daten dekodieren und rendern können. ActivityAttributes Beide die Hauptanwendung und der Widget Extension müssen die von ActivityKit verwendeten Modelle gemeinsam nutzen. Der Xcode-erstellte Live Activity Template rendernt die von diesem Plugin übergebenen JSON-Layouts nicht automatisch; der Extension muss auch ein kompatibles native Layout-Renderer enthalten.
Geteilte Bilder
Wenn Sie die Bildverwaltungsmethoden verwenden, fügen Sie die App-Gruppen Fähigkeit zur Hauptanwendung und Widget-Erweiterungsziel aktivieren. Aktivieren Sie die gleiche Gruppe auf beiden Zielen mit dem genauen Identifier, der vom Plugin erwartet wird.
group.<MAIN_APP_BUNDLE_ID>.liveactivities
Live Aktivitäts-Extensions dürfen den Netzwerkzugriff nicht nutzen. Laden Sie remote Bilder im Hauptapp herunter, speichern Sie sie in der gemeinsamen App-Gruppe mit saveImage, und verweisen Sie dann auf das gespeicherte Bild aus der Layout. Verpackte Assets müssen sich auch dem Ziel Widget Extension zugehörig sein.
Tiefe Links und Push-Updates
- Registriere jede benutzerdefinierte URL-Scheme, die von
behavior.widgetUrlortapUrloder verwendet wird, unter der Hauptanwendungs-Target-URL: Info > URL-Typen Einstellungen. - Fügen Sie für servergetriebene Updates die Benachrichtigungen Kapazität und implementieren Sie die ActivityKit-Push-Token-Verwaltung mit APNs.
- Hinzufügen
NSSupportsLiveActivitiesFrequentUpdatesFügen Sie nur dann hinzu, wenn die App häufige ActivityKit-Push-Updates erfordert.
Die Aktivierung der Benachrichtigungen-Kapazität reicht allein nicht aus; servergetriebene Updates erfordern native Token-Verwaltung und einen APNs-Hintergrund.
ActivityKit beschränkt die kombinierte statische und dynamische Live-Aktivitätsdaten auf 4 KB. Die Dynamic Island ist nur auf unterstützten Gerätemodellen sichtbar; andere Geräte verwenden die Anzeige auf dem Bildschirm mit verriegelter Tür.
Was dieses Plugin enthüllt
areActivitiesSupported- Überprüfen Sie, ob Live-Aktivitäten auf diesem Gerät unterstützt werden. Erfordert iOS 16.1+ und Geräteunterstützung.startActivity- Starten Sie eine neue Live-Aktivität mit der angegebenen Layout und Daten.updateActivity- Ein bestehendes Live-Ereignis mit neuen Daten aktualisieren.endActivity- Ein Live-Ereignis beenden.
Beispielanwendung
areActivitiesSupported
Überprüfen Sie, ob Live-Ereignisse auf diesem Gerät unterstützt werden. Erfordert iOS 16.1+ und Geräteunterstützung.
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
Starten Sie ein neues Live-Ereignis mit der angegebenen Layout und Daten.
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
Ein bestehendes Live-Ereignis mit neuen Daten aktualisieren.
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
Ein Live-Ereignis beenden.
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
});
Vollständige Referenz
- GitHub: https://github.com/Cap-go/capacitor-live-ereignisse/
- Dokumentation: /docs/plugins/live-ereignisse/
Weitermachen von @capgo/capacitor-live-ereignisse
Wenn Sie Live Activities verwenden Mit @capgo/capacitor-live-aktivitäten um native Medien und Schnittstellen zu planen und zu verbinden, verwenden Sie @capgo/capacitor-live-aktivitäten für die Implementierungsdetails in @capgo/capacitor-live-aktivitäten, Getting Started für die Implementierungsdetails in Einführung, Mit @capgo/capacitor-video-player für die native Fähigkeit in Mit @capgo/capacitor-video-player, @capgo/capacitor-Video-Player für die Implementierungsdetails in @capgo/capacitor-video-player und Mit @capgo/capacitor-native-navigations für die native Fähigkeit in @capgo/capacitor-native-Navigation.