---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Configuração de notificações por push em sua aplicação Android

# Configuração de notificações por push em sua aplicação Android {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 min. de leitura

Além das tarefas que você deve executar em sua instância ServiceNow® para configurar uma notificação por push, você também deve incluir um código específico em sua aplicação Android.

## Criar o NowSDK NowPushService {#mobsdk-and-setup-push-app__section_hyb_zxp_prb}

Uma das primeiras coisas que precisa ser feita em sua aplicação é recuperar o NowSDK NowPushService. Adicione um código semelhante ao snippet a seguir no início do corpo do código principal.

    /**
     * Helper class used to handle different Now service instances.
     */
    @Singleton
    class SdkManager @Inject constructor() {

        private var nowPushService: NowPushService? = null

        /**
         * Create the NowPushService once in the lifetime of the application inside the Application
         * class or another manager class that will be injected into other classes via dagger/hilt.
         * NowPushService should be created after initializing the NowSDK
         */
        suspend fun getNowPushService(): NowPushService? {
            if (nowPushService != null) return nowPushService

            return NowPushSDK.makePushService(URL("https://instance-name.service-now.com")).getOrThrow()
                .also { this.nowPushService = it }
        }
    }

Para obter informações adicionais sobre o método NowPushSDK.makePushService(), consulte [NowPushSDK - makePushService(instanceURL: URL)](https://servicenow-prod.fluidtopics.net/q5vD5OWOjAWJhBwWy7bUtA#NPushSDK-makePushService_S_O_O "Cria um serviço NowPush.").

## Registrar o token de push {#mobsdk-and-setup-push-app__section_kyr_4cq_prb}

Google Firebase fornece um token de push exclusivo que identifica o dispositivo e a aplicação para receber notificações por push. Para que uma aplicação receba notificação por push, você deve registrar este token usando o NowPushService. Adicione uma função semelhante ao snippet de código a seguir em sua aplicação Android. Certifique-se de mudar PushAppName para o nome da sua aplicação Android. Esta aplicação deve ser registrada com sua instância ServiceNow®.

    FirebaseMessaging.getInstance().token.addOnCompleteListener {task ->
      val token = task.result

      if (!task.isSuccessfull || token == null) {
        throw Exception("Unable to fetch token"))
      }

      pushService.registerPushToken(token, "PushAppName", {
          Log.v(TAF, "Successfully registered push token")
      }, { e ->
          Log.e(TAG, "Error registrating push", e)
      })
    }

Para obter informações adicionais sobre o método registerPushToken(), consulte [NowPushService - registerPushToken(pushToken: cadeia de caracteres, pushApp: cadeia de caracteres, sucessoCallback: executável, errorCallback: consumidor\<Throwable\> )](https://servicenow-prod.fluidtopics.net/OXYDcvghT~gSu9rbeJjkqQ#NPushServ-registerPushToken_S_S_O_O "Registra um token Firebase exclusivo com a instância ServiceNow usada para identificar as notificações por push do dispositivo Android atual e da aplicação especificada.").

## Cancelar registro do token de envio

Você precisa cancelar o registro do token de envio sempre que o usuário sair da aplicação, por exemplo, quando o usuário faz logout. Use um código semelhante ao snippet de código a seguir para cancelar o registro do token de envio. Certifique-se de mudar PushAppName para o nome da sua aplicação Android.

    pushService.unregisterPushToken(token, "PushAppName", {
          Log.v(TAG, "Successfully unregistered push token")
    }, { e ->
          Log.e(TAG, "Error unregistering push", e)
    })

Para obter informações adicionais sobre o método unregisterPushToken(), consulte [NowPushService - unregisterPushToken(pushToken: cadeia de caracteres, pushApp: cadeia de caracteres, sucessoCallback: executável, errorCallback: consumidor\<Throwable\> )](https://servicenow-prod.fluidtopics.net/OXYDcvghT~gSu9rbeJjkqQ#NPushServ-unregPushToken_S_S_O_O "Cancela o registro do token de push Firebase especificado com a instância ServiceNow associada.").

## Implementar o FirebaseMessagingService

Você deve implementar o `FirebaseMessagingService` em sua aplicação. Para configurar e implementar este serviço, siga as instruções na [documentação do Android Firebase](https://firebase.google.com/docs/cloud-messaging/android/receive).

Depois da configuração, substitua o método onMessageReceived() e passe o RemoteMessage por meio do `NowPushService`. Se o `NowPushService` reconhecer a notificação, ele a processará e retornará o objeto de notificação para a aplicação processar. Atualmente, a única notificação implementada é `NowPushVirtualAgent`. Uma notificação desconhecida retorna um objeto `NotSupportedPushError`.

    //Custom coroutineScope created in the Firebase service class
    private val serviceCoroutineScope = CoroutineScope(Dispatchers.IO)

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
      serviceCoroutineScope.launch {
        val result = handleNowPush(remoteMessage)

        if (result.isSuccess) {
          when (val push = result.getOrNull()) {
            is NowPushVirtualAgent -> handleVirtualAgentPush(push)
          }
        } else {
          // Not a NowPush. Handle host app push notification message here
        }
      }
    }

    private suspend fun handleNowPush(remoteMessage: RemoteMessage): Result<NowPushPayload> {
      val nowPushService = sdkManager.getNowPushService()

      return suspendCoroutine { cont ->
        nowPushService?.handlePush(remoteMessage,
          { cont.resume(Result.success(it)) }, { cont.resumeWithException(it) })
      }
    }

Para obter informações adicionais sobre o método handlePush(), consulte [NowPushService - handlePush(remoteMessage: RemoteMessage, sucessoCallback: consumidor\<NowPushPayload\> , errorCallback: consumidor\<Throwable\> )](https://servicenow-prod.fluidtopics.net/OXYDcvghT~gSu9rbeJjkqQ#NPushServ-handlePush_S_O_O "Processa uma solicitação de notificação por push.").

Além disso, você deve substituir onNewToken(token: String). Certifique-se de passar o token por meio de pushService.registerPushToken(), semelhante ao que foi feito na seção "Registrar o token de envio".

