Pular para o conteúdo

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

Terminal window
# 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'
end

2. 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 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 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 to

Seu 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.