Configurar chamadas individuais e notificações por push na Biblioteca da Interface do Usuário
A Biblioteca da Interface do Usuário fornece suporte pronto para fazer chamadas individuais usando identificadores de participante dos Serviços de Comunicação do Azure. Para dar suporte a chamadas individuais, a Biblioteca da Interface do Usuário fornece notificações de chamadas de entrada. Você também pode usar os Serviços de Comunicação do Azure como uma fonte de eventos da Grade de Eventos do Azure para chamadas.
Neste artigo, você aprenderá a fazer chamadas um-para-um corretamente usando a biblioteca de interface do usuário em seu aplicativo.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Um recurso de Serviços de Comunicação implantado. Crie um recurso de Serviços de Comunicação.
- Um token de acesso de usuário para habilitar o cliente de chamada. Obtenha um token de acesso de usuário.
- Opcional: conclusão do Guia de início rápido para introdução aos compostos da Biblioteca da Interface do Usuário.
Configurar as funcionalidades
Para obter mais informações, consulte a biblioteca de interface do usuário do Android de código aberto e o código do aplicativo de exemplo.
Configurar permissões para notificações por push
Para configurar notificações push, você precisa de uma conta do Firebase com o Firebase Cloud Messaging (FCM) habilitado. Seu serviço FCM deve estar conectado a uma instância dos Hubs de Notificação do Azure. Para obter mais informações, consulte Notificações dos Serviços de Comunicação. Você também precisa usar o Android Studio versão 3.6 ou posterior para criar seu aplicativo.
Para que o aplicativo Android receba mensagens de notificação do FCM, ele precisa de um conjunto de permissões. No seu AndroidManifest.xml
ficheiro, adicione o seguinte conjunto de permissões após a <manifest ...>
etiqueta ou </application>
.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Adicionar notificações de entrada ao seu aplicativo móvel
Os Serviços de Comunicação do Azure integram-se com a Grade de Eventos do Azure e os Hubs de Notificação do Azure, para que possa adicionar notificações por push às suas aplicações no Azure.
Registrar/cancelar o registro para notificações por push do hub de notificação
Para se registrar para notificações por push, o aplicativo precisa chamar registerPushNotification()
uma CallComposite
instância com um token de registro de dispositivo.
Para obter o token de registro do dispositivo, adicione o SDK do Firebase à instância do módulo do build.gradle
aplicativo. Para receber notificações do Firebase, integre os Hubs de Notificação do Azure seguindo as instruções em Notificações dos Serviços de Comunicação.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Lidar com notificações por push recebidas da Grade de Eventos ou do hub de notificação
Para receber notificações por push para chamadas recebidas, chame handlePushNotification
uma CallComposite
instância com uma carga útil.
Para obter a carga do FCM, comece criando um novo serviço (File>New>Service>Service) que estende a FirebaseMessagingService
classe Firebase SDK e substitui o onMessageReceived
método. Esse método é o manipulador de eventos chamado quando o FCM entrega a notificação por push ao aplicativo.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Registe-se para receber notificações de chamadas
Para receber notificações de chamadas recebidas após handlePushNotification
, inscreva-se e CallCompositeIncomingCallEvent
CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
contém o callId de entrada e as informações do chamador. CallCompositeIncomingCallCancelledEvent
contém callId e código de cancelamento de chamada Solução de problemas nos Serviços de Comunicação do Azure.
private var incomingCallEvent: IncomingCallEvent? = null
private var incomingCallCancelledEvent: IncomingCallCancelledEvent? = null
class IncomingCallEvent : CallCompositeEventHandler<CallCompositeIncomingCallEvent> {
override fun handle(eventArgs: CallCompositeIncomingCallEvent?) {
// Display incoming call UI to accept/decline a call
// CallCompositeIncomingCallEvent contains call id and caller information
}
}
class IncomingCallCancelledEvent : CallCompositeEventHandler<CallCompositeIncomingCallCancelledEvent> {
override fun handle(eventArgs: CallCompositeIncomingCallCancelledEvent?) {
// Call-ended event when a call is declined or not accepted
}
}
// Event subscription
incomingCallEvent = IncomingCallEvent()
callComposite.addOnIncomingCallEventHandler(incomingCallEvent)
incomingCallCancelledEvent = IncomingCallCancelledEvent()
callComposite.addOnIncomingCallCancelledEventHandler(incomingCallEndEvent)
// Event unsubscribe
callComposite.removeOnIncomingCallEventHandler(incomingCallEvent)
callComposite.removeOnIncomingCallCancelledEventHandler(incomingCallEndEvent)
Lidar com chamadas
Para aceitar chamadas, ligue para accept
. Para recusar chamadas, ligue para reject
.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Disque para outros participantes
Para iniciar chamadas com outros participantes, crie CallCompositeStartCallOptions
com IDs brutos dos participantes de CommunicationIdentity
e launch
.
Para obter mais informações, consulte a biblioteca de interface do usuário do iOS de código aberto e o código de aplicativo de exemplo.
Configurar notificações por push
Uma notificação por push móvel é a notificação pop-up que você recebe no dispositivo móvel. Este artigo concentra-se em notificações push de voz sobre Protocolo Internet (VoIP).
As seções a seguir descrevem como registrar, manipular e cancelar o registro de notificações por push. Antes de iniciar essas tarefas, preencha estes pré-requisitos:
- No Xcode, vá para Assinando & Recursos. Adicione uma funcionalidade selecionando + Capacidade e, em seguida, selecione Notificações push.
- Adicione outro recurso selecionando + Capacidade e, em seguida, selecione Modos em segundo plano.
- Em Modos em segundo plano, marque as caixas de seleção Voz sobre IP e Notificações remotas.
Adicionar notificações de entrada ao seu aplicativo móvel
Os Serviços de Comunicação do Azure integram-se com a Grade de Eventos do Azure e os Hubs de Notificação do Azure, para que possa adicionar notificações por push às suas aplicações no Azure.
Registrar/cancelar o registro para notificações push do hub de notificação
Para se registrar para notificações por push, o aplicativo precisa chamar registerPushNotifications()
uma CallComposite
instância com um token de registro de dispositivo.
// to register
let deviceToken: Data = pushRegistry?.pushToken(for: PKPushType.voIP)
callComposite.registerPushNotifications(
deviceRegistrationToken: deviceToken) { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
// to unregister
callComposite.unregisterPushNotification()
Lidar com notificações por push recebidas da Grade de Eventos ou do hub de notificação
Para receber notificações por push para chamadas recebidas, chame handlePushNotification()
uma CallComposite
instância com uma carga útil de dicionário.
Quando você usa handlePushNotification()
e as opções do CallKit são definidas, você recebe uma notificação do CallKit para aceitar ou recusar chamadas.
// App is in the background
// push notification contains from/to communication identifiers and event type
let pushNotification = PushNotification(data: payload.dictionaryPayload)
let callKitOptions = CallKitOptions(...//CallKit options)
CallComposite.reportIncomingCall(pushNotification: pushNotification,
callKitOptions: callKitOptions) { result in
if case .success() = result {
DispatchQueue.global().async {
// You don't need to wait for a Communication Services token to handle the push because
// Communication Services common receives a callback function to get the token with refresh options
// create call composite and handle push notification
callComposite.handlePushNotification(pushNotification: pushNotification)
}
}
}
// App is in the foreground
let pushNotification = PushNotification(data: dictionaryPayload)
callComposite.handlePushNotification(pushNotification: pushNotification) { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
Registre-se para receber notificações de chamadas no handle push
Para receber notificações de chamadas recebidas após handlePushNotification
, inscreva-se e onIncomingCall
onIncomingCallCancelled
. IncomingCall
contém o callId de entrada e as informações do chamador. IncomingCallCancelled
contém callId e código de cancelamento de chamada Solução de problemas nos Serviços de Comunicação do Azure.
let onIncomingCall: (IncomingCall) -> Void = { [] incomingCall in
// Incoming call id and caller info
}
let onIncomingCallEnded: (IncomingCallCancelled) -> Void = { [] incomingCallCancelled in
// Incoming call cancelled code with callId
}
callComposite.events.onIncomingCall = onIncomingCall
callComposite.events.onIncomingCallEnded = onIncomingCallEnded
Desativar o push interno para chamadas recebidas
Para receber notificações por push somente de EventGrid
e APNS
definido disableInternalPushForIncomingCall
como true em CallCompositeOptions
. Se disableInternalPushForIncomingCall
for true, o evento de notificação por push da biblioteca ui recebeu somente quando handlePushNotification
será chamado. A opção disableInternalPushForIncomingCall
ajuda a parar de receber notificações no modo de CallComposite
primeiro plano. Esta definição não controla EventGrid
nem NotificationHub
as definições.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Iniciar o composto na chamada recebida aceita da chamada do SDK CallKit
O SDK do iOS de Chamada dos Serviços de Comunicação do Azure dá suporte à integração do CallKit. Você pode habilitar essa integração na Biblioteca da Interface do Usuário configurando uma instância do CallCompositeCallKitOption
. Para obter mais informações, consulte Integrar com o CallKit.
Inscreva-se se o onIncomingCallAcceptedFromCallKit
CallKit de chamar o SDK estiver habilitado. Em chamada aceita, inicie callComposite
com ID de chamada.
let onIncomingCallAcceptedFromCallKit: (callId) -> Void = { [] callId in
// Incoming call accepted call id
}
callComposite.events.onIncomingCallAcceptedFromCallKit = onIncomingCallAcceptedFromCallKit
// launch composite with/without local options
// Note: as call is already accepted, setup screen will not be displayed
callComposite.launch(callIdAcceptedFromCallKit: callId)
Lidar com chamadas com o CallComposite
Para aceitar chamadas, ligue para accept
. Para recusar chamadas, ligue para reject
.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Disque para outros participantes
Para iniciar chamadas com outros participantes, inicie callComposite
com a lista de participantes do CommunicationIdentifier
.
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)