Pushes VoIP
No iOS 8, a Apple introduziu o PushKit e os pushes VoIP - um novo tipo de notificação push. Além da funcionalidade de push padrão, um push VoIP permite que o aplicativo execute código antes de exibir a notificação ao usuário.
1. Adicione o módulo PushwooshVoIP ao seu projeto.
Swift Package Manager

Cocoapods
# Descomente a próxima linha para definir uma plataforma global para o seu projeto# platform :ios, '9.0'
target 'MyApp' do # Comente a próxima linha se não quiser usar frameworks dinâmicos use_frameworks!
pod 'PushwooshXCFramework' pod 'PushwooshFramework/PushwooshVoIP'
end2. Na aba Signing & Capabilities, adicione a capacidade Voice over IP marcando a caixa de seleção, como mostrado na captura de tela abaixo:

3. Inicialize o módulo PushwooshVoIP como mostrado no código abaixo.
import UIKitimport PushwooshFrameworkimport PushwooshVoIPimport CallKitimport PushKit
@mainclass AppDelegate: UIResponder, UIApplicationDelegate, PWVoIPCallDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
/// Inicializa o módulo VoIP do Pushwoosh. /// /// - Parâmetros: /// - supportVideo: Um valor booleano que indica se as chamadas de vídeo são suportadas. /// - ringtoneSound: O nome do arquivo de som de toque personalizado a ser usado para chamadas recebidas (por exemplo, `"mySound.caf"`). /// - handleTypes: O tipo de identificador de chamada a ser suportado. Valores possíveis: /// - `1` – Genérico /// - `2` – Número de telefone /// - `3` – Endereço de e-mail Pushwoosh.VoIP.initializeVoIP(true, ringtoneSound: "mySound.caf", handleTypes: 1)
// Define o delegate para receber eventos de chamada VoIP Pushwoosh.VoIP.delegate = self
return true }
// MARK: - Callbacks Obrigatórios do PWVoIPCallDelegate
func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage) { // Lida com o push VoIP recebido }
func pwProviderDidReset(_ provider: CXProvider) { // Lida com a redefinição do provedor }
func pwProviderDidBegin(_ provider: CXProvider) { // Lida com a ativação do provedor }}4. O protocolo PWVoIPCallDelegate define callbacks obrigatórios e opcionais para lidar com o ciclo de vida da chamada VoIP e as interações do CallKit.
@objc public protocol PWVoIPCallDelegate: NSObjectProtocol {
/// Chamado quando um push VoIP de entrada é recebido. @objc func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage)
/// Opcional: Chamado quando a chamada de entrada foi reportada com sucesso ao CallKit. @objc optional func voipDidReportIncomingCallSuccessfully(voipMessage: PushwooshVoIP.PWVoIPMessage)
/// Opcional: Chamado quando a comunicação da chamada de entrada ao CallKit falhou. @objc optional func voipDidFailToReportIncomingCall(error: Error)
/// Opcional: Chamado quando uma nova chamada de saída é iniciada. @objc optional func startCall(_ provider: CXProvider, perform action: CXStartCallAction)
/// Opcional: Chamado quando uma chamada ativa é encerrada. @objc optional func endCall(_ provider: CXProvider, perform action: CXEndCallAction, voipMessage: PushwooshVoIP.PWVoIPMessage?)
/// Opcional: Chamado quando uma chamada de entrada é atendida. @objc optional func answerCall(_ provider: CXProvider, perform action: CXAnswerCallAction, voipMessage: PushwooshVoIP.PWVoIPMessage?)
/// Opcional: Chamado quando a chamada é silenciada ou não. @objc optional func mutedCall(_ provider: CXProvider, perform action: CXSetMutedCallAction)
/// Opcional: Chamado quando a chamada é colocada em espera ou retirada da espera. @objc optional func heldCall(_ provider: CXProvider, perform action: CXSetHeldCallAction)
/// Opcional: Chamado quando um tom DTMF é reproduzido. @objc optional func playDTMF(_ provider: CXProvider, perform action: CXPlayDTMFCallAction)
/// Chamado quando o provedor CallKit é redefinido. @objc func pwProviderDidReset(_ provider: CXProvider)
/// Chamado quando o provedor CallKit inicia. @objc func pwProviderDidBegin(_ provider: CXProvider)
/// Opcional: Fornece a instância do controlador de chamadas do CallKit. @objc optional func returnedCallController(_ controller: CXCallController)
/// Opcional: Fornece a instância do provedor do CallKit. @objc optional func returnedProvider(_ provider: CXProvider)
/// Opcional: Chamado quando a sessão de áudio é ativada. @objc optional func activatedAudioSession(_ provider: CXProvider, didActivate audioSession: AVAudioSession)
/// Opcional: Chamado quando a sessão de áudio é desativada. @objc optional func deactivatedAudioSession(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession)}5. Faça o upload do seu certificado VoIP para o Painel de Controle do Pushwoosh de acordo com o Guia de Configuração e escolha o gateway de Produção.
É isso!
Compartilhe seu feedback conosco
Anchor link toSeu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas opiniões conosco através deste formulário.