Getting Started
설치 단계와 이 플러그인의 전체 마크다운 가이드가 포함된 설정 지시어를 복사하세요.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-incoming-call-kit`
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/incoming-call-kit/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.
설치
설치Capgo AI 도구에 다음 명령어를 사용하여 스킬을 추가하세요.
npx 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-incoming-call-kit` plugin in my project.만약에 수동 설치를 원한다면, 다음 명령어를 실행하고 아래의 플랫폼별 지침을 따르세요.
-
패키지 설치
터미널 bun add @capgo/capacitor-incoming-call-kit -
자연스러운 프로젝트 동기화
터미널 bunx cap sync -
링 소스 선택 incoming-call 이벤트가 백엔드, SDK (예: Twilio 또는 Stream) 또는 원시 푸시 경로 (예: FCM 또는 PushKit)에서 오는지 결정합니다.
통합이 어떻게 맞물리는지
통합이 어떻게 맞물리는지이 플러그인은 원시 incoming-call 표시만 관리합니다. 앱은 여전히 전송, 인증, 실제 미디어 세션을 관리합니다.
통합 패턴
- 백엔드 또는 호출 SDK가 링 이벤트를 전송합니다.
- 앱이
showIncomingCall(). - 플러그인이 원시 incoming-call UI를 표시합니다.
callAccepted실제 회의 또는 VoIP 세션에 참여하도록 앱에게 알려줍니다.callDeclined,callEnded또는callTimedOut앱이 원격 상태를 정리하도록 지시합니다.
최소한의 통합
최소한의 통합import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
await IncomingCallKit.requestPermissions();await IncomingCallKit.requestFullScreenIntentPermission();
await IncomingCallKit.addListener('callAccepted', async ({ call }) => { console.log('Accepted', call.callId, call.extra); // Start or join your real call session here.});
await IncomingCallKit.addListener('callDeclined', ({ call }) => { console.log('Declined', call.callId); // Tell your backend or SDK that the user declined.});
await IncomingCallKit.addListener('callTimedOut', ({ call }) => { console.log('Timed out', call.callId); // Clear ringing state in your backend or SDK.});
await IncomingCallKit.showIncomingCall({ callId: 'call-42', callerName: 'Ada Lovelace', handle: '+39 555 010 020', appName: 'Capgo Phone', hasVideo: true, timeoutMs: 45_000, extra: { roomId: 'room-42', callerUserId: 'user_ada', }, android: { channelId: 'calls', channelName: 'Incoming Calls', showFullScreen: true, }, ios: { handleType: 'phoneNumber', },});중요한 옵션
중요한 옵션callId: 나중에 재사용할 수 있는 안정된 식별자endCall()timeoutMs: 최선의 노력으로 응답하지 못하는 타임아웃extra: 리스너 패킷에서 반영된 임의의 JSONandroid.channelId그리고android.channelName: 안드로이드 알림 채널 조정android.showFullScreen: 안드로이드 전면 incoming-call 활동을 요청합니다.ios.handleType: 선택generic,phoneNumber, 또는emailAddressCallKit을 위한
활성화된 통화를 관리하는
활성화된 통화를 관리하는const { calls } = await IncomingCallKit.getActiveCalls();
await IncomingCallKit.endCall({ callId: 'call-42', reason: 'remote-ended',});
await IncomingCallKit.endAllCalls({ reason: 'session-reset',});이벤트 모델
이벤트 모델incomingCallDisplayed: 네이티브 UI가 성공적으로 표시되었습니다.callAccepted: 사용자가 네이티브 UI에서 수락했습니다.callDeclined: 사용자가 통화에 참가하기 전에 거부했습니다.callEnded: 앱 또는 플랫폼이 추적된 통화를 종료했습니다.callTimedOut__CAPGO_KEEP_0__까지 전화는 받지 못했습니다.timeoutMs
각 이벤트는 정규화 된 call 데이터와 원본 extra 객체를 포함합니다.
플랫폼 참고
제목 '플랫폼 참고'- iOS 가이드를 PushKit 또는 APNs 흐름에 CallKit을 연결하기 전에 읽어보세요. Android 가이드를
- Android 14 이상에서 전체 화면 인텐트에 의존하기 전에 읽어보세요. Android 14 이상에서 전체 화면 인텐트에 의존하기 전에 읽어보세요. Android 14 이상에서 전체 화면 인텐트에 의존하기 전에 읽어보세요.
- 웹은 지원되지 않습니다.
Getting Started에서 계속 진행하세요.
Getting Started에서 계속 진행하세요__CAPGO_KEEP_0__을 사용 중이라면 Getting Started API과 연결하여 Using @capgo/capacitor-incoming-call-kit Using @capgo/capacitor-incoming-call-kit의 네이티브 기능을 위해 API Overview API Overview의 구현 세부 사항을 위해 Introduction Introduction의 구현 세부 사항을 위해 API 키 implementation 세부 정보에 대한 API 키 장치 implementation 세부 정보에 대한 장치.