메뉴로 바로가기

시작하기

  1. 패키지를 설치하세요

    터미널 창
    bun add @capgo/capacitor-incoming-call-kit
  2. 자연어 프로젝트를 동기화

    터미널 창
    bunx cap sync
  3. 링 소스를 선택하세요 incoming-call 이벤트가 백엔드에서 오는지, SDK와 같은 Twilio 또는 Stream과 같은 서비스에서 오는지, 또는 FCM 또는 PushKit과 같은 네이티브 푸시 경로에서 오는지 결정하세요.

통합이 어떻게 맞물리는지

통합이 어떻게 맞물리는지

이 플러그인은 네이티브 incoming-call 표시만 관리합니다. 앱은 여전히 전송, 인증, 실제 미디어 세션을 관리합니다.

공통의 프로덕션 패턴은:

  1. SDK의 ring 이벤트를 발생시킨 백엔드 또는 SDK가 호출합니다.
  2. __CAPGO_KEEP_0__가 showIncomingCall().
  3. __CAPGO_KEEP_0__는 native incoming-call UI를 제공합니다.
  4. callAccepted __CAPGO_KEEP_0__가 실제 회의나 VoIP 세션에 참여하도록 __CAPGO_KEEP_0__에게 지시합니다.
  5. callDeclined, callEnded또는 callTimedOut __CAPGO_KEEP_0__가 remote 상태를 정리하도록 __CAPGO_KEEP_0__에게 지시합니다.
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__CAPGO_KEEP_0__ endCall()
  • timeoutMs: __CAPGO_KEEP_0__
  • extra: __CAPGO_KEEP_0__
  • android.channelId 그리고 android.channelName: 안드로이드 알림 채널 조정
  • android.showFullScreen: 안드로이드 전면 incoming-call 활동을 요청합니다.
  • ios.handleType선택 generic, phoneNumber, 또는 emailAddress CallKit

전화 중인 활동 관리

전화 중인 활동 관리
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 데이터와 원본 extra 객체가 포함되어 있습니다.

  • 읽어보세요 iOS 가이드 __CAPGO_KEEP_0__
  • PushKit 또는 APNs 흐름에 CallKit을 통합하기 전에 읽어보세요. Android 가이드
  • __CAPGO_KEEP_0__