Push-Benachrichtigungen in Ihrer Anwendung Android einrichten

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Zusätzlich zu den Aufgaben, die Sie in der Instanz ServiceNow® ausführen müssen, um eine Push-Benachrichtigung zu konfigurieren, müssen Sie auch spezifischen Code in Ihre Anwendung Android einfügen.

    Erstellen Sie den NowSDK NowPushService

    Als erstes muss in Ihrer Anwendung das NowSDK NowPushServiceabgerufen werden. Fügen Sie Code, der dem folgenden Codeausschnitt ähnelt, früh in Ihrem Hauptcodetext hinzu.

    /**
     * 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 }
        }
    }

    Weitere Informationen zur Methode NowPushSDK.machenPushService() finden Sie unter NowPushSDK – makePushService(instanceURL: URL).

    Registrieren Sie das Push-Token

    Google Firebase stellt ein eindeutiges Push-Token bereit, das das Gerät und die Anwendung identifiziert, die Push-Benachrichtigungen erhalten sollen. Damit eine Anwendung eine Push-Benachrichtigung erhält, müssen Sie dieses Token bei NowPushServiceregistrieren. Fügen Sie eine Funktion ähnlich dem folgenden Codefragment in Ihrer Anwendung Android hinzu. Stellen Sie sicher, dass Sie PushAppName in den Namen Ihrer Anwendung Android ändern. Diese Anwendung muss bei Ihrer Instanz ServiceNow® registriert sein.

    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)
      })
    }

    Weitere Informationen zur Methode registrierenPushToken() finden Sie unter NowPushService – registrierenPushToken(pushToken: Zeichenfolge, pushApp: Zeichenfolge, erfolgreichCallback: Ausführbar, errorCallback: Verbraucher<Throwable> ).

    Heben Sie die Registrierung des Push-Tokens auf

    Sie müssen die Registrierung des Push-Tokens aufheben, wenn der Benutzer Ihre Anwendung beendet, z. B. wenn er sich abmeldet. Verwenden Sie Code ähnlich dem folgenden Codeausschnitt, um die Registrierung des Push-Tokens aufzuheben. Stellen Sie sicher, dass Sie PushAppName in den Namen Ihrer Anwendung Android ändern.

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

    Weitere Informationen zur Methode unregisterPushToken() finden Sie unter NowPushService – unregisterPushToken(pushToken: Zeichenfolge, pushApp: Zeichenfolge, erfolgreichCallback: Ausführbar, errorCallback: Verbraucher<Throwable> ).

    Implementieren Sie den FirebaseMessagingService

    Sie müssen FirebaseMessagingService in Ihrer Anwendung implementieren. Befolgen Sie zum Einrichten und Implementieren dieses Service die Anweisungen in der Android Firebase-Dokumentation.

    Überschreiben Sie nach dem Setup die Methode onMessageReceived(), und übergeben Sie RemoteMessage an NowPushService. Wenn NowPushService die Benachrichtigung erkennt, verarbeitet sie sie und gibt das Benachrichtigungsobjekt zurück, das die Anwendung verarbeiten soll. Derzeit ist NowPushVirtualAgentdie einzige implementierte Benachrichtigung. Eine unbekannte Benachrichtigung gibt ein NotSupportedPushError -Objekt zurück.

    //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) })
      }
    }

    Weitere Informationen zur Methode handlePush() finden Sie unter NowPushService – handlePush(remoteMessage: RemoteMessage, erfolgreichCallback: Verbraucher<NowPushPayload> , FehlerRückruf: Verbraucher<Throwable> ).

    Außerdem müssen Sie onNewToken(token: String)überschreiben. Achten Sie darauf, das Token an pushService.registerPushToken()zu übergeben, ähnlich wie im Abschnitt „Push-Token registrieren“ beschrieben.