跳过主要内容
@capgo/capacitor-live-activities 开源 实时活动插件图标

@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-live-activities Capacitor 插件

管理iOS Live Activities和动态岛布局从Capacitor中使用JSON驱动的模板

安装

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

指南

如何在 Capacitor 中使用实时活动

使用 @capgo/capacitor-live-activities

Capacitor 实时活动插件界面,用于管理 iOS 实时活动

安装

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

iOS 配置

安装和同步插件不会创建本机实时活动 UI。 在调用之前,请在 Xcode 中配置 ActivityKit: startActivity查看在 __CAPGO_KEEP_0__ 上

  1. Run bunx cap open ios.
  2. 添加 实时活动小部件 目标并启用 包含Live Activity.
  3. 设置应用程序和Widget Extension部署目标到iOS 16.1或更高版本
  4. 确保扩展嵌入在主应用程序中
  5. 保持一个 ActivityConfiguration 已注册在扩展的 WidgetBundle,包括锁屏和所有动态岛的呈现
  6. 添加 NSSupportsLiveActivities 到主应用程序目标的 Info.plist.
<key>NSSupportsLiveActivities</key>
<true/>

添加目标本身不足。原生应用或插件必须调用ActivityKit的request、update和end API。Widget扩展必须包含SwiftUIcode,可以解码和渲染相同的 ActivityAttributes 和内容状态由这些调用使用。将共享的ActivityKit模型包含在主应用和Widget扩展目标中。Xcode生成的Live Activity模板不会自动渲染传递给此插件的JSON布局;扩展还需要兼容的原生布局渲染器。

共享图片

使用图像管理方法时,添加 应用组 将应用组的相同标识符添加到主应用和Widget扩展目标中,使用插件期望的exact标识符。

group.<MAIN_APP_BUNDLE_ID>.liveactivities

Live Activity扩展无法访问网络。下载远程图片在主应用中,保存到共享的应用组中, saveImage然后从布局中引用保存的图片。捆绑资产也必须属于Widget扩展目标。

深度链接和推送更新

  • 注册任何自定义URL方案由 behavior.widgetUrl 或 tapUrl 在Capacitor Live Activities中,Live Update、Cloudflare、Capacitor、GitHub、Capgo、code、API、SDK、CLI、npm、bun等关键词保持不变。 Info &gt; URL 类型 设置。
  • 对于服务器驱动的更新,添加 推送通知 能力,并实现 ActivityKit 推送令牌处理与 APNs。
  • 添加 NSSupportsLiveActivitiesFrequentUpdates 仅当应用程序需要频繁的 ActivityKit 推送更新时才添加。

仅使推送通知能力开启是不够的;服务器驱动的更新需要原生令牌处理和 APNs 后端。

ActivityKit 将静态和动态 Live 活动数据的总和限制为 4 KB。动态岛屿仅在支持的设备模型上可见;其他设备使用锁屏显示。

此插件暴露的内容

  • areActivitiesSupported - 检查此设备是否支持 Live 活动。需要 iOS 16.1+ 和设备支持。
  • startActivity - 使用指定的布局和数据启动一个新的 Live 活动。
  • updateActivity - 使用最新数据更新现有的 Live 活动。
  • endActivity - 结束一个 Live 活动。

- 示例使用

areActivitiesSupported

- 检查是否在此设备上支持 Live 活动。需要 iOS 16.1+ 和设备支持。

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

- 使用指定的布局和数据启动一个新的 Live 活动。

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

- 使用最新数据更新现有的 Live 活动。

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

- 结束一个 Live 活动。

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

- 全部参考

- 从使用 @capgo/capacitor-live-activities 中继续

如果您正在使用 使用 @capgo/capacitor-live-activities 为了规划原生媒体和界面行为,连接它与 @capgo/capacitor-live-activities 为了在 @capgo/capacitor-live-activities 中实现详细信息 开始 为了在开始中实现详细信息 使用 @capgo/capacitor-video-player 为了在使用 @capgo/capacitor-video-player 中实现原生能力 @capgo/capacitor-视频播放器 为了在 @capgo/capacitor-video-player 中实现详细信息,并且 使用 @capgo/capacitor-native-navigation 为使用@capgo/capacitor-native-navigation的原生能力。

常见问题

Live Activities插件常见问题

如何在Capacitor应用中安装Live Activities插件?

Run &quot;bun add @capgo/capacitor-live-activities&quot; (or &quot;npm install @capgo/capacitor-live-activities&quot;), then run &quot;bunx cap sync&quot; so the iOS and Android projects pick up the native code. Import it from &quot;@capgo/capacitor-live-activities&quot; in your app code.

@capgo/capacitor-live-activities 是否支持 React、Vue 和 Angular?

是的。Live Activities 是一个 Capacitor 包,因此它可以与任何在 Capacitor 内部运行的 Web 框架一起使用,包括 Ionic、React、Vue、Angular、Svelte 和普通的 JavaScript。

哪个 Capacitor 版本支持 @capgo/capacitor-live-activities?

Capgo 插件遵循 Capacitor 的主要版本:使用与 Capacitor 主要版本匹配的插件主要版本(例如插件 v8 与 Capacitor 8)。在 GitHub README 中的兼容性表格中列出了维护的版本。

@capgo/capacitor-live-activities 是否免费和开源?

是的。源代码 code 公开在 GitHub 上,https://github.com/Cap-go/capacitor-live-activities/,并且该包可以从 npm 免费安装。欢迎 bug 报告和拉取请求。

我可以在 App Store 审核时更新使用 Live Activities 的 code 吗?

安装或升级插件会更改 native code,因此需要新建一个商店构建。然后,JavaScript、HTML 和 CSS 的更改可以立即通过 Capgo 的实时更新发布。

无需等待应用程序审查即可将实时活动更改推送到应用商店

一旦插件在您的应用商店中构建完成,Capgo 实时更新将在几分钟内将您的 JavaScript、HTML 和 CSS 更改推送给用户。

开始使用 Capgo