メインコンテンツへスキップ

スタートガイド

GitHub

AIアシストによるセットアップでプラグインをインストールできます。以下のコマンドを使用して、お使いの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-incoming-call-kit` plugin in my project.

手動セットアップを希望する場合は、以下のコマンドを実行してプラグインをインストールし、下記のプラットフォーム別の手順に従ってください:

  1. パッケージをインストール

    ターミナル
    bun add @capgo/capacitor-incoming-call-kit
  2. ネイティブプロジェクトを同期

    ターミナル
    bunx cap sync
  3. 着信ソースの選択 incoming-call イベントの発生元を、自社バックエンド、Twilio や Stream などの SDK、または FCM や PushKit といったネイティブのプッシュ経由のいずれにするか決定します。

import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
const result = await IncomingCallKit.showIncomingCall({
callId: 'call-id-123',
callerName: 'caller',
});
console.log(result);
import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
const result = await IncomingCallKit.endCall({ callId: 'call-id-123' });
console.log(result);
import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
const result = await IncomingCallKit.endAllCalls();
console.log(result);
  • 権限:呼び出し checkPermissions() その後 requestPermissions() 必要に応じて。
  • リスナー: 画面がアンマウントされたらハンドルを削除します。
  • 信頼できる情報源: 信頼 src/definitions.ts GitHub リポジトリ内。

このプラグインが担当するのはネイティブの着信表示のみです。トランスポート、認証、実際のメディアセッションは引き続きアプリ側の責務です。

一般的な本番環境でのパターンは次のとおりです:

  1. バックエンドまたは呼び出し用の SDK が着信イベントを発行します。
  2. アプリが呼び出します showIncomingCall().
  3. プラグインがネイティブの着信UIを表示します。
  4. callAccepted アプリに実際のルームまたはVoIPセッションへの参加を通知します。
  5. 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: リスナーのペイロードにエコーバックされる任意のJSON
  • android.channelId と android.channelName: Android通知チャネルのチューニング
  • android.showFullScreen: Androidのフルスクリーン着信アクティビティをリクエストします
  • 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ガイド CallKitをPushKitやAPNsのフローに組み込む前に確認してください。
  • 以下の Androidガイド Android 14以降でフルスクリーンインテントを使用する前に確認してください。
  • Webはサポートされていません。

Getting Startedの続きを進める

「Getting Started からの続き」セクション

使用している場合 スタートガイド ダッシュボードと API の運用を計画するには、これを次と連携させます @capgo/capacitor-incoming-call-kit の使用方法 「@capgo/capacitor-incoming-call-kit の使用方法」のネイティブ機能については、 API の概要 「API の概要」の実装の詳細については、 はじめに 「はじめに」における実装の詳細については、 API キー および「API Keys」の実装の詳細については、 デバイス 実装の詳細については Devices を参照してください。