Passer à la navigation

iOS

Sur iOS, le plugin signale l'appel entrant à CallKit. Cela vous donne la feuille de dialogue d'appel entrant système et les actions d'appel standardisées sans que vous deviez construire votre propre interface d'appel native.

requestPermissions() se résout immédiatement sur iOS car CallKit lui-même ne nécessite pas de dialogue de demande de permission de runtime.

import { IncomingCallKit } from '@capgo/capacitor-incoming-call-kit';
await IncomingCallKit.showIncomingCall({
callId: 'call-42',
callerName: 'Ada Lovelace',
handle: '+1 555 010 020',
ios: {
handleType: 'phoneNumber',
supportsHolding: true,
supportsDTMF: false,
},
});

Utiliser ios.handleType pour contrôler la façon dont CallKit formate la prise en charge :

  • generic pour les identifiants spécifiques à l'application
  • phoneNumber pour les numéros de téléphone réels
  • emailAddress pour les identités basées sur l'e-mail

Ce plugin ne s'inscrit pas PushKit ou APNs pour vous.

Pour un sonnerage réel en arrière-plan ou en état terminé sur iOS, votre application hôte nécessite toujours la mise en place native d'Apple push qui correspond à votre stratégie de transport :

  1. Activer les notifications Push lorsque votre transport utilise la livraison Apple push.
  2. Activer le mode de fond Voice over IP lorsque votre application utilise un flux de push VoIP.
  3. Transmettre l'événement d'appel entrant à votre application et invoquez ce plugin dès que le pont Capacitor est disponible.

Si votre événement de sonnerie n'existe que dans JavaScript, vous obtiendrez la meilleure expérience alors que l'application est déjà en cours d'exécution en arrière-plan.

CallKit ne remplace pas votre média SDK. Si la session d'appel réelle utilise l'accès au microphone ou à la caméra, ces descriptions d'utilisation doivent encore figurer dans votre application :

<key>NSMicrophoneUsageDescription</key>
<string>This app uses the microphone for calls.</string>
<key>NSCameraUsageDescription</key>
<string>This app uses the camera for video calls.</string>

Ajoutez uniquement les clés dont votre flux d'appel réel a besoin.

Gardez ces responsabilités dans votre couche d'application

Section intitulée “Gardez ces responsabilités dans votre couche d'application”
  • Inscription PushKit et APNs
  • Authentification et rafraîchissement de jeton
  • Rejoindre la salle réelle ou la session VoIP après callAccepted
  • Finir ou réconcilier l'état d'appel distant lorsque le plugin émet callDeclined, callEndedou callTimedOut