Configuração de notificações por push no seu Android aplicação

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 2 min. de leitura
  • Além das tarefas que você deve executar no ServiceNow® instância para configurar uma notificação por push, você também deve incluir um código específico em Android aplicação.

    Crie o NowSDK NowPushService

    Uma das primeiras coisas que precisa ser feito em sua aplicação é recuperar o NowSDK NowPushService . Adicione um código semelhante ao snippet a seguir antecipadamente no 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 NowPushSDK.makePushService() método, consulte NowPushSDK - makePushService(instanceURL: URL).

    Registre o token de push

    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 NowPushService . Adicione uma função semelhante ao snippet de código a seguir em seu Android aplicação. Certifique-se de mudar PushAppNamepara o nome do seu Android aplicação. Esta aplicação deve ser registrada com seu ServiceNow® instância.

    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 RegisterPushToken() método, consulte NowPushService - registerPushToken(pushToken: Cadeia de caracteres, pushApp: Cadeia de caracteres, successCallback: Executável, erroCallback: Consumer<Throwable>).

    Cancele o registro do token de push

    Você precisa cancelar o registro do token de push sempre que o usuário sair da aplicação, como 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 push. Certifique-se de mudar PushAppNamepara o nome do seu Android aplicação.

    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 UnregisterPushToken() método, consulte NowPushService - unregisterPushToken(pushToken: Cadeia de caracteres, pushApp: Cadeia de caracteres, successCallback: Executável, erroCallback: Consumer<Throwable>).

    Implemente o FirebaseMessagingService

    Você deve implementar o. FirebaseMessagingService em sua aplicação. Para configurar e implementar este serviço, siga as instruções em Documentação do Android Firebase .

    Uma vez configurado, substitua OnMessageReceived() e passar o. RemoteMessageaté NowPushService . . NowPushService reconhece a notificação, processará e retornará o objeto de notificação para a aplicação manipular. Atualmente, a única notificação implementada é NowPushVirtualAgent . Uma notificação desconhecida retorna um Sem suporte objeto.

    //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 HandlePush() método, consulte NowPushService - handlePush(remoteMessage: RemoteMessage, successCallback: Consumer<NowPushPayload>, erroCallback: Consumer<Throwable>).

    Além disso, você deve substituir OnNewToken(token: Cadeia de caracteres) . Passe o token para PushService.registerPushToken() , Semelhante ao que foi feito na seção "Registrar o token de push".