시작하기
이 플러그인에 대한 설치 단계와 전체 마크다운 가이드를 포함한 설정 프롬프트를 복사하세요.
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.
-
패키지를 설치하세요
터미널 창 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: 최선을 다하는 unanswered timeoutextra: 리스너 패킷에 반영된 임의의 JSONandroid.channelId그리고android.channelName: 안드로이드 알림 채널 조정android.showFullScreen: 안드로이드 전면 incoming-call 활동을 요청ios.handleType: 선택generic,phoneNumber, oremailAddressCallKit을 위한
활성화된 통화를 관리
활성화된 통화 관리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: 통화는 답변되지 않았습니다.timeoutMs
각 이벤트는 정규화된 call payload와 원본 extra 객체를 포함합니다.
플랫폼 참고 사항
‘플랫폼 참고 사항’ 제목- iOS 가이드를 읽으십시오. iOS PushKit 또는 APNs 흐름에 CallKit을 연결하기 전에. Android 가이드를 읽으십시오.
- Android 14 이상에서 전체 화면 인텐트에 의존하기 전에. 웹은 지원되지 않습니다. __CAPGO_KEEP_0__
- __CAPGO_KEEP_1__