Aggiungere chiamate audio e video in tempo reale all'interno di un'applicazione iOS rappresenta una delle funzionalità più complesse e ad alto valore aggiunto per app di telemedicina, assistenza clienti, social e comunicazione aziendale.
Per offrire un'esperienza pari a WhatsApp o FaceTime su iPhone, è fondamentale combinare tre componenti chiave: WebRTC per lo streaming peer-to-peer a bassa latenza, PushKit per svegliare l'app in background e CallKit per mostrare la schermata di chiamata nativa di iOS anche a telefono bloccato.
1. L'Architettura VoIP per iOS
- Signaling Server: Gestito tramite WebSockets (es. Node.js o Laravel WebSockets) per lo scambio di SDP (Session Description Protocol) e ICE Candidates.
- STUN / TURN Server (Coturn): Indispensabile per garantire la connessione tra utenti che si trovano dietro a NAT e firewall mobili 4G/5G.
- Framework WebRTC Nativo: Gestione dei flussi audio (Opus) e video (H.264/VP8) con hardware acceleration di iOS.
2. Integrazione CallKit per l'Interfaccia di Sistema
CallKit garantisce che le chiamate in arrivo appaiano come telefonate tradizionali di sistema, consentendo all'utente di rispondere dalla schermata di blocco o tramite CarPlay:
import CallKit
final class CallManager: NSObject, CXProviderDelegate {
private let provider: CXProvider
private let callController = CXCallController()
override init() {
let config = CXProviderConfiguration()
config.supportsVideo = true
config.maximumCallsPerCallGroup = 1
self.provider = CXProvider(configuration: config)
super.init()
self.provider.setDelegate(self, queue: nil)
}
func reportIncomingCall(uuid: UUID, handle: String) {
let update = CXCallUpdate()
update.remoteHandle = CXHandle(type: .generic, value: handle)
update.hasVideo = true
provider.reportNewIncomingCall(with: uuid, update: update) { error in
if let error = error {
print("Errore ricezione chiamata: \(error)")
}
}
}
}
Hai un progetto da sviluppare o vuoi creare la tua App?
Parliamo direttamente della tua applicazione. Inviami i tuoi requisiti per ricevere una stima di fattibilità e tempistiche entro poche ore con P.IVA italiana (03118460348).