시작하기
이 플러그인의 설치 단계와 전체 마크다운 가이드가 포함된 설정 프롬프트를 복사하세요.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-stream-call`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/streamcall/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
AI-Assisted Setup으로 플러그인을 설치할 수 있습니다. 다음 명령어로 AI 도구에 Capgo 스킬을 추가하세요:
bunx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins그런 다음 아래 프롬프트를 사용하세요:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-stream-call` plugin in my project.수동 설정을 선호한다면, 다음 명령어를 실행하여 플러그인을 설치하고 아래의 플랫폼별 지침을 따르세요:
bun add @capgo/capacitor-stream-callbunx cap sync가져오기
“Import” 섹션import { StreamCall } from '@capgo/capacitor-stream-call';빠른 시작
“빠른 시작” 섹션import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.login({ token: 'your-token', userId: 'user-123', name: 'John Doe', apiKey: 'your-api-key'});예시: logout
“예제: logout” 섹션import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.logout();예시: call
“예제: call” 섹션import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.call({ userId: 'user-456', type: 'video', ring: true});자주 하는 실수
“흔한 실수” 섹션- 리스너: 화면이 언마운트될 때 핸들을 제거합니다.
- 네이티브 동기화: 실행
bunx cap sync플러그인 업그레이드 후. - 신뢰할 수 있는 소스: 신뢰
src/definitions.tsGitHub 레포지토리에서.
API 개요
“API 개요” 섹션login
“login” 섹션Stream Video 서비스 로그인
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.login({ token: 'your-token', userId: 'user-123', name: 'John Doe', apiKey: 'your-api-key'});logout
“logout” 섹션Stream Video 서비스 로그아웃
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.logout();call
“call” 섹션다른 사용자에게 전화 걸기
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.call({ userId: 'user-456', type: 'video', ring: true});endCall
“endCall” 섹션현재 통화 종료하기
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.endCall();joinCall
“joinCall” 섹션진행 중인 통화 참여하기
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.joinCall({ callId: 'call001', callType: 'default' });setMicrophoneEnabled
“setMicrophoneEnabled” 섹션마이크 활성화 또는 비활성화
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.setMicrophoneEnabled({ enabled: false });setCameraEnabled
“setCameraEnabled” 섹션카메라 활성화 또는 비활성화
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.setCameraEnabled({ enabled: false });enableBluetooth
“enableBluetooth” 섹션블루투스 오디오 활성화
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.enableBluetooth();acceptCall
“acceptCall” 섹션수신 전화 받기
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.acceptCall();rejectCall
“rejectCall” 섹션수신 전화 거절하기
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.rejectCall();isCameraEnabled
“isCameraEnabled” 섹션카메라 활성화 여부 확인
import { StreamCall } from '@capgo/capacitor-stream-call';
const isCameraEnabled = await StreamCall.isCameraEnabled();console.log(isCameraEnabled);getCallStatus
“getCallStatus” 섹션현재 통화 상태 가져오기
import { StreamCall } from '@capgo/capacitor-stream-call';
const callStatus = await StreamCall.getCallStatus();console.log(callStatus);getRingingCall
“getRingingCall” 섹션현재 벨소리가 울리는 통화 가져오기
import { StreamCall } from '@capgo/capacitor-stream-call';
const ringingCall = await StreamCall.getRingingCall();console.log(ringingCall);toggleViews
“toggleViews” 섹션사용 가능한 비디오 레이아웃 전환
import { StreamCall } from '@capgo/capacitor-stream-call';
const { newLayout } = await StreamCall.toggleViews();console.log(`Layout switched to ${newLayout}`);setSpeaker
“setSpeaker” 섹션스피커폰 켜기
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.setSpeaker({ name: 'speaker' });switchCamera
“switchCamera” 섹션카메라 전환
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.switchCamera({ camera: 'back' });getCallInfo
“getCallInfo” 섹션발신자 정보를 포함한 활성 통화의 상세 정보 가져오기
import { StreamCall } from '@capgo/capacitor-stream-call';
const result = await StreamCall.getCallInfo({ callId: 'call-id-123' });console.log(result);setDynamicStreamVideoApikey
“setDynamicStreamVideoApikey” 섹션정적 키를 대체할 동적 Stream Video API 키 설정
import { StreamCall } from '@capgo/capacitor-stream-call';
await StreamCall.setDynamicStreamVideoApikey({ apiKey: 'new-api-key' });getDynamicStreamVideoApikey
“getDynamicStreamVideoApikey” 섹션현재 설정된 dynamic Stream Video API 키 가져오기
import { StreamCall } from '@capgo/capacitor-stream-call';
const result = await StreamCall.getDynamicStreamVideoApikey();if (result.hasDynamicKey) { console.log('Dynamic API key:', result.apiKey);} else { console.log('Using static API key from resources');}getCurrentUser
“getCurrentUser” 섹션현재 사용자의 정보 가져오기
import { StreamCall } from '@capgo/capacitor-stream-call';
const currentUser = await StreamCall.getCurrentUser();console.log(currentUser);타입 레퍼런스
“타입 참조” 섹션LoginOptions
“LoginOptions” 섹션export interface LoginOptions { /** Stream Video API token */ token: string; /** User ID for the current user */ userId: string; /** Display name for the current user */ name: string; /** Optional avatar URL for the current user */ imageURL?: string; /** Stream Video API key */ apiKey: string; /** ID of the HTML element where the video will be rendered */ magicDivId?: string; pushNotificationsConfig?: PushNotificationsConfig;}SuccessResponse
“SuccessResponse” 섹션export interface SuccessResponse { /** Whether the operation was successful */ success: boolean; callId?: string;}CallOptions
“CallOptions” 섹션export interface CallOptions { /** User ID of the person to call */ userIds: string[]; /** Type of call, defaults to 'default' */ type?: CallType; /** Whether to ring the other user, defaults to true */ ring?: boolean; /** Team name to call */ team?: string; /** Whether to start the call with video enabled, defaults to false */ video?: boolean; /** Custom data to be passed to the call */ custom?: Record< string, | string | boolean | number | null | Record<string, string | boolean | number | null> | string[] | boolean[] | number[] >;}CallEvent
“CallEvent” 섹션export interface CallEvent { /** ID of the call */ callId: string; /** Current state of the call */ state: CallState; /** User ID of the participant in the call who triggered the event */ userId?: string; /** Reason for the call state change, if applicable */ reason?: string; /** Information about the caller (for incoming calls) */ caller?: CallMember; /** List of call members */ members?: CallMember[];
custom?: Record< string, | string | boolean | number | null | Record<string, string | boolean | number | null> | string[] | boolean[] | number[] >;
count?: number;}IncomingCallPayload
“IncomingCallPayload” 섹션export interface IncomingCallPayload { /** Full call CID (e.g. default:123) */ cid: string; /** Event type (currently always "incoming") */ type: 'incoming'; /** Information about the caller */ caller?: CallMember; /** Custom data to be passed to the call */ custom?: Record< string, | string | boolean | number | null | Record<string, string | boolean | number | null> | string[] | boolean[] | number[] >;
/** * Get the native Capacitor plugin version * * @returns {Promise<{ id: string }>} an Promise with version for this device * @throws An error if the something went wrong */ getPluginVersion(): Promise<{ version: string }>;}CameraEnabledResponse
“CameraEnabledResponse” 섹션export interface CameraEnabledResponse { enabled: boolean;}StreamCallLayout
“StreamCallLayout” 섹션export type StreamCallLayout = 'grid' | 'spotlight' | 'dynamic' | 'fullScreen' | 'fullscreen';DynamicApiKeyResponse
“DynamicApiKeyResponse” 섹션export interface DynamicApiKeyResponse { /** The dynamic API key if set, null if not */ apiKey: string | null; /** Whether a dynamic key is currently set */ hasDynamicKey: boolean;}CurrentUserResponse
“CurrentUserResponse” 섹션export interface CurrentUserResponse { /** User ID of the current user */ userId: string; /** Display name of the current user */ name: string; /** Avatar URL of the current user */ imageURL?: string; /** Whether the user is currently logged in */ isLoggedIn: boolean;}PushNotificationsConfig
“PushNotificationsConfig” 섹션export interface PushNotificationsConfig { pushProviderName: string; voipProviderName: string;}CallType
“CallType” 섹션export type CallType = 'default' | 'audio' | 'audio_room' | 'livestream' | 'development';CallState
“CallState” 섹션export type CallState = // User-facing states | 'idle' | 'ringing' | 'joining' | 'reconnecting' | 'joined' | 'leaving' | 'left' // Event-specific states | 'created' | 'session_started' | 'rejected' | 'participant_counts' | 'missed' | 'accepted' | 'ended' | 'camera_enabled' | 'camera_disabled' | 'speaker_enabled' | 'speaker_disabled' | 'microphone_enabled' | 'microphone_disabled' | 'outgoing_call_ended' | 'unknown';Source of Truth
“Source Of Truth” 섹션이 페이지는 플러그인의 src/definitions.tsupstream에서 public API가 변경되면 sync를 다시 실행하세요.
시작하기 다음 단계
“Getting Started에서 계속하기” 섹션사용 중이라면 시작하기 대시보드 및 API 운영을 계획하려면, 이를 다음과 연결하세요 @capgo/capacitor-stream-call 사용하기 @capgo/capacitor-stream-call 사용하기에서 네이티브 기능을 위해, API 개요 구현 세부 사항은 API 개요에서 소개 구현 세부 사항은 소개에서 API 키 API Keys의 구현 세부 사항은, 기기 Devices의 구현 세부 사항은.