안내서
실시간 활동에 대한 튜토리얼
@capgo/capacitor-live-activities를 사용하여
Capacitor 실시간 활동 플러그인: iOS 실시간 활동 관리를 위한 인터페이스
설치
bun add @capgo/capacitor-live-activities
bunx cap sync
iOS 설정
플러그인을 설치하고 동기화하는 것은 네이티브 실시간 활동 UI를 생성하지 않습니다. ActivityKit을 Xcode에서 호출하기 전에 startActivity실행
- 추가
bunx cap open ios. - 위젯 확장 __CAPGO_KEEP_0__ iOS 16.1 이상으로 설정하고 활성화 실시간 활동 포함.
- 앱 및 위젯 확장 배포 대상으로 iOS 16.1 이상으로 설정하십시오.
- 확장 프로그램이 메인 앱에 포함되어야 합니다.
- __CAPGO_KEEP_0__
ActivityConfiguration확장 프로그램에 등록되어야 합니다.WidgetBundleLock Screen 및 모든 Dynamic Island 발표와 함께 사용할 수 있습니다. - 메인 앱 대상에 추가하십시오.
NSSupportsLiveActivities대상만 추가하는 것은 충분하지 않습니다. Native 앱 또는 플러그인은 ActivityKit의 request, update, end API를 호출해야 합니다. 위젯 확장 프로그램은 SwiftUI __CAPGO_KEEP_0__를 포함해야 하며 JSON 레이아웃을 디코딩하고 렌더링할 수 있어야 합니다. ActivityKit 모델을 메인 앱과 위젯 확장 프로그램의 대상에 공유해야 합니다. Xcode가 생성한 실시간 활동 템플릿은 자동으로 이 플러그인에 전달된 JSON 레이아웃을 렌더링하지 않습니다. 확장 프로그램도 호환 가능한 네이티브 레이아웃 렌더러가 필요합니다.Info.plist.
<key>NSSupportsLiveActivities</key>
<true/>
Adding the target alone is not sufficient. The native app or plugin must call ActivityKit's request, update, and end APIs. The Widget Extension must contain SwiftUI code that can decode and render the same ActivityAttributes 실시간 활동을 포함하려면 ActivityKit의 request, update, end API를 호출해야 합니다. 위젯 확장 프로그램은 SwiftUI __CAPGO_KEEP_0__를 포함해야 하며 JSON 레이아웃을 디코딩하고 렌더링할 수 있어야 합니다. ActivityKit 모델을 메인 앱과 위젯 확장 프로그램의 대상에 공유해야 합니다. Xcode가 생성한 실시간 활동 템플릿은 자동으로 이 플러그인에 전달된 JSON 레이아웃을 렌더링하지 않습니다. 확장 프로그램도 호환 가능한 네이티브 레이아웃 렌더러가 필요합니다.
위젯 확장 프로그램은 iOS 16.1 이상으로 설정되어야 합니다.
When using the image-management methods, add the 애플리케이션 그룹 권한을 메인 앱과 위젯 확장 대상에 추가하십시오. 동일한 그룹을 두 대상 모두에 동일한 식별자로 사용하여 플러그인에 의해 예상되는 정확한 식별자로 사용하십시오:
group.<MAIN_APP_BUNDLE_ID>.liveactivities
라이브 활동 확장 프로그램은 네트워크에 접근할 수 없습니다. 메인 앱에서远程 이미지를 다운로드하고, 그 이미지를 공유된 애플리케이션 그룹에 저장한 후 레이아웃에서 저장된 이미지를 참조하십시오. 배포된 자산도 위젯 확장 대상에 속해야 합니다. saveImage깊이 링크 및 푸시 업데이트
사용하는 모든 커스텀 URL 스키마를 메인 앱 대상의
- 설정 > URL 유형
behavior.widgetUrl에서 등록하십시오.tapUrl서버에서 구동되는 업데이트 권한을 추가하십시오. Info > URL Types - settings. 알림 ActivityKit push-token 처리를 위한 APNs 기능을 구현합니다.
- 추가
NSSupportsLiveActivitiesFrequentUpdates앱이 자주 ActivityKit push 업데이트를 필요로 할 때만.
Push Notifications 기능만 활성화하는 것은 충분하지 않습니다. 서버 주도 업데이트를 위해 native 토큰 처리 및 APNs 백엔드가 필요합니다.
ActivityKit는 정적 및 동적 라이브 활동 데이터의 합쳐진 크기를 4 KB로 제한합니다. 동적 섬은 지원되는 장치 모델에서만 표시되며, 다른 장치에서는 Lock Screen 표시를 사용합니다.
이 플러그인은 노출합니다.
areActivitiesSupported- 이 장치에서 라이브 활동이 지원되는지 확인합니다. iOS 16.1+ 및 장치 지원이 필요합니다.startActivity- 새로운 라이브 활동을 지정된 레이아웃과 데이터와 함께 시작합니다.updateActivity- 기존 라이브 활동을 새로운 데이터와 함께 업데이트합니다.endActivity- 라이브 활동을 종료합니다.
예제 사용법
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
});
Full Reference
- GitHub: https://github.com/Cap-go/capacitor-live-activities/
- Docs: /docs/plugins/live-activities/
capgo를 사용하여 계속합니다. @capgo/capacitor-live-activities
__CAPGO_KEEP_0__를 사용하여 @capgo/capacitor-live-activities native 미디어 및 인터페이스 동작을 계획하는 경우에 사용합니다. @capgo/capacitor-live-activities for the implementation detail in @capgo/capacitor-live-activities, Getting Started __CAPGO_KEEP_0__-live-활동 시작 Using @capgo/capacitor-video-player for the native capability in Using @capgo/capacitor-video-player, @capgo/capacitor-video-player for the implementation detail in @capgo/capacitor-video-player, and Using @capgo/capacitor-native-navigation for the native capability in Using @capgo/capacitor-native-navigation.