Sauter au contenu principal

Activités en vie plugin Capacitor

Gérer les activités Live iOS et les layouts de l'île dynamique à partir de Capacitor avec des modèles JSON.

Installer

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

Guide

Comment utiliser les activités en direct dans Capacitor

Utilisation de @capgo/capacitor-activités en direct

Capacitor Plugin d'activités Live pour la gestion des activités Live iOS.

Installer

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

Configuration iOS

Installation et synchronisation du plugin ne créent pas l'interface utilisateur native de Live Activity. Avant d'appeler startActivityconfigurez ActivityKit dans Xcode :

  1. Exécutez bunx cap open ios.
  2. Ajoutez un Extension de widget Extension de Widget cible et activez.
  3. Définissez les cibles de déploiement de l'application et de l'extension Widget sur iOS 16.1 ou ultérieur.
  4. Assurez-vous que l'extension soit intégrée à l'application principale.
  5. garde ActivityConfiguration enregistré dans l'extension's WidgetBundleAvec les présentations de la zone de verrouillage et de l'île dynamique.
  6. Ajouter NSSupportsLiveActivities à l'application cible principale Info.plist.
<key>NSSupportsLiveActivities</key>
<true/>

Le ciblage de l'application seule n'est pas suffisant. L'application native ou le plugin doivent appeler les API ActivityKit de requête, de mise à jour et de fin. L'extension Widget doit contenir du code SwiftUI code qui peut décoder et afficher le même ActivityAttributes Et l'état de contenu utilisé par ces appels. Incluez les modèles ActivityKit partagés dans les deux applications cibles principale et extension Widget. Le modèle de Live Activity généré par Xcode ne rend pas automatiquement les layouts JSON transmis à ce plugin ; l'extension nécessite également un rendu de layout natif compatible.

Images partagées

Lors de l'utilisation des méthodes de gestion d'images, ajoutez App Groups La capacité à la cible principale et à l'extension de widget. Activez le même groupe sur les deux cibles en utilisant l'identifiant exact attendu par le plugin.

group.<MAIN_APP_BUNDLE_ID>.liveactivities

Les extensions d'activité Live ne peuvent pas accéder au réseau. Téléchargez les images distantes dans l'application principale, enregistrez-les dans le groupe d'application partagé avec saveImage, puis référez-vous à l'image sauvegardée à partir du layout. Les actifs embarqués doivent également appartenir à la cible d'extension de Widget.

Liens profonds et mises à jour push

  • Enregistrez tout schéma de lien personnalisé utilisé par behavior.widgetUrl ou tapUrl sous l'application cible principale Paramètres > Types d'URL settings.
  • Pour les mises à jour server-driven, ajoutez le Notifications de Push capacité et mettre en œuvre la gestion du jeton de push d'ActivityKit avec APNs.
  • Add NSSupportsLiveActivitiesFrequentUpdates only when the app requires frequent ActivityKit push updates.

Activer la capacité de notifications push seule n'est pas suffisant ; les mises à jour côté serveur nécessitent une gestion de jeton native et un backend APNs.

ActivityKit limits the combined static and dynamic Live Activity data to 4 KB. The Dynamic Island is only visible on supported device models; other devices use the Lock Screen presentation.

consulting_faq_subtitle

  • areActivitiesSupported Vérifiez si les activités en direct sont prises en charge sur cet appareil. Exige iOS 16.1+ et prise en charge de l'appareil.
  • startActivity - Démarrer une nouvelle activité en direct avec le layout spécifié et les données.
  • updateActivity Mise à jour d'une activité en direct existante avec de nouvelles données.
  • endActivity - Finir une activité en direct.

- Exemple d'utilisation.

areActivitiesSupported

Vérifiez si les activités en direct sont prises en charge sur cet appareil. Exige iOS 16.1+ et prise en charge de l'appareil.

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

- Démarrer une nouvelle activité en direct avec le layout spécifié et les données.

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

Mettre à jour une activité Live existante avec de nouvelles données.

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

- Finir une activité en direct.

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
});

- Référence complète.

Continuez à partir de @capgo/capacitor-activités en direct

Si vous utilisez L'utilisation de @capgo/capacitor-activités en direct Pour planifier le comportement des médias et de l'interface natives, connectez-l’avec @capgo/capacitor-activités en direct pour les détails d'implémentation dans @capgo/capacitor-activités en direct, Prise en main pour les détails d'implémentation dans Prise en main, L'utilisation de @capgo/capacitor-lecteur de vidéo pour la capacité native dans L'utilisation de @capgo/capacitor-lecteur de vidéo, @capgo/capacitor-lecteur de vidéo pour les détails d'implémentation dans @capgo/capacitor-video-player, et En utilisant @capgo/capacitor-native-navigation pour la capacité native dans En utilisant @capgo/capacitor-native-navigation.

FAQ

FAQ du plugin d'activités en direct

Comment installer le plugin d'activités en direct dans une application Capacitor?

Exécutez la commande « bun add @capgo/capacitor-live-activities » (ou « npm install @capgo/capacitor-live-activities »), puis exécutez « bunx cap sync » afin que les projets iOS et Android prennent en compte le code natif code. Importez-l’à partir de « @capgo/capacitor-live-activities » dans votre application code.

Le package @capgo/capacitor-live-activities fonctionne-t-il avec React, Vue et Angular?

Oui. Le plugin d'activités en direct est un package Capacitor, il fonctionne donc avec tout framework web qui tourne à l'intérieur de Capacitor, y compris Ionic, React, Vue, Angular, Svelte et JavaScript pur.

Quelle version de Capacitor est prise en charge par @capgo/capacitor-live-activities?

Capgo plugins suivent la version majeure de Capacitor : utilisez la version majeure du plugin qui correspond à la version majeure de votre Capacitor (par exemple, plugin v8 avec Capacitor 8). La table de compatibilité dans le README du GitHub liste les versions maintenues.

Le package @capgo/capacitor-live-activities est-il gratuit et open source?

Oui. Le code source code est public sur GitHub à l'adresse https://github.com/Cap-go/capacitor-live-activities/ et le package est gratuit à installer à partir de npm. Les rapports de bogues et les demandes de modification sont les bienvenus.

Puis-je mettre à jour code qui utilise les activités en direct sans passer par une revue de l'App Store?

L'installation ou la mise à niveau du plugin change le code natif code, il faut donc une nouvelle build de l'application. Après cela, les modifications JavaScript, HTML et CSS qui appellent le plugin peuvent être déployées instantanément avec les mises à jour en direct de Capgo.

Ship Live Activities changes without waiting for app review

Une fois le plugin intégré à votre magasin, les mises à jour en temps réel Capgo poussent vos modifications JavaScript, HTML et CSS chez les utilisateurs en quelques minutes.

Démarrer avec Capgo