Saltar al contenido

Pushes VoIP

En iOS 8, Apple introdujo PushKit, y los pushes VoIP, un nuevo tipo de notificaciones push. Además de la funcionalidad push estándar, un push VoIP permite que la aplicación ejecute código antes de mostrar la notificación al usuario.

1. Agregue el módulo PushwooshVoIP a su proyecto.

Swift Package Manager

Cocoapods

Terminal window
# Descomente la siguiente línea para definir una plataforma global para su proyecto
# platform :ios, '9.0'
target 'MyApp' do
# Comente la siguiente línea si no desea utilizar frameworks dinámicos
use_frameworks!
pod 'PushwooshXCFramework'
pod 'PushwooshFramework/PushwooshVoIP'
end

2. En la pestaña Signing & Capabilities, agregue la capacidad Voice over IP marcando la casilla de verificación, como se muestra en la siguiente captura de pantalla:

3. Inicialice el módulo PushwooshVoIP como se muestra en el siguiente código.

import UIKit
import PushwooshFramework
import PushwooshVoIP
import CallKit
import PushKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate, PWVoIPCallDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
/// Inicializa el módulo VoIP de Pushwoosh.
///
/// - Parámetros:
/// - supportVideo: Un valor booleano que indica si se admiten videollamadas.
/// - ringtoneSound: El nombre del archivo de sonido de tono de llamada personalizado que se utilizará para las llamadas entrantes (p. ej., `"mySound.caf"`).
/// - handleTypes: El tipo de manejador de llamadas que se va a admitir. Valores posibles:
/// - `1` – Genérico
/// - `2` – Número de teléfono
/// - `3` – Dirección de correo electrónico
Pushwoosh.VoIP.initializeVoIP(true, ringtoneSound: "mySound.caf", handleTypes: 1)
// Establecer delegado para recibir eventos de llamadas VoIP
Pushwoosh.VoIP.delegate = self
return true
}
// MARK: - Devoluciones de llamada PWVoIPCallDelegate requeridas
func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage) {
// Manejar push VoIP entrante
}
func pwProviderDidReset(_ provider: CXProvider) {
// Manejar reinicio del proveedor
}
func pwProviderDidBegin(_ provider: CXProvider) {
// Manejar activación del proveedor
}
}

4. El protocolo PWVoIPCallDelegate define devoluciones de llamada requeridas y opcionales para manejar el ciclo de vida de la llamada VoIP y las interacciones de CallKit.

@objc public protocol PWVoIPCallDelegate: NSObjectProtocol {
/// Se llama cuando se recibe un push VoIP entrante.
@objc func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage)
/// Opcional: Se llama cuando la llamada entrante se informó correctamente a CallKit.
@objc optional func voipDidReportIncomingCallSuccessfully(voipMessage: PushwooshVoIP.PWVoIPMessage)
/// Opcional: Se llama cuando falla el informe de la llamada entrante a CallKit.
@objc optional func voipDidFailToReportIncomingCall(error: Error)
/// Opcional: Se llama cuando se inicia una nueva llamada saliente.
@objc optional func startCall(_ provider: CXProvider, perform action: CXStartCallAction)
/// Opcional: Se llama cuando finaliza una llamada activa.
@objc optional func endCall(_ provider: CXProvider, perform action: CXEndCallAction, voipMessage: PushwooshVoIP.PWVoIPMessage?)
/// Opcional: Se llama cuando se responde una llamada entrante.
@objc optional func answerCall(_ provider: CXProvider, perform action: CXAnswerCallAction, voipMessage: PushwooshVoIP.PWVoIPMessage?)
/// Opcional: Se llama cuando la llamada se silencia o se reactiva el sonido.
@objc optional func mutedCall(_ provider: CXProvider, perform action: CXSetMutedCallAction)
/// Opcional: Se llama cuando la llamada se pone en espera o se reanuda.
@objc optional func heldCall(_ provider: CXProvider, perform action: CXSetHeldCallAction)
/// Opcional: Se llama cuando se reproduce un tono DTMF.
@objc optional func playDTMF(_ provider: CXProvider, perform action: CXPlayDTMFCallAction)
/// Se llama cuando se reinicia el proveedor de CallKit.
@objc func pwProviderDidReset(_ provider: CXProvider)
/// Se llama cuando se inicia el proveedor de CallKit.
@objc func pwProviderDidBegin(_ provider: CXProvider)
/// Opcional: Proporciona la instancia del controlador de llamadas de CallKit.
@objc optional func returnedCallController(_ controller: CXCallController)
/// Opcional: Proporciona la instancia del proveedor de CallKit.
@objc optional func returnedProvider(_ provider: CXProvider)
/// Opcional: Se llama cuando se activa la sesión de audio.
@objc optional func activatedAudioSession(_ provider: CXProvider, didActivate audioSession: AVAudioSession)
/// Opcional: Se llama cuando se desactiva la sesión de audio.
@objc optional func deactivatedAudioSession(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession)
}

5. Cargue su certificado VoIP en el Panel de Control de Pushwoosh de acuerdo con la Guía de Configuración, y elija la puerta de enlace de Producción.

¡Eso es todo!

Comparta sus comentarios con nosotros

Anchor link to

Sus comentarios nos ayudan a crear una mejor experiencia, por lo que nos encantaría saber de usted si tiene algún problema durante el proceso de integración del SDK. Si encuentra alguna dificultad, no dude en compartir sus pensamientos con nosotros a través de este formulario.