Einrichten von Push-Benachrichtigungen in Ihrer Anwendung Android .
Zusätzlich zu den Aufgaben, die Sie in Ihrer Instanz ServiceNow® ausführen müssen, um eine Push-Benachrichtigung zu konfigurieren, müssen Sie auch bestimmten Code in Ihre Anwendung Android einfügen.
Erstellen Sie den NowSDK NowPushService
Eines der ersten Dinge, die in Ihrer Anwendung durchgeführt werden müssen, ist das Abrufen des NowSDK NowPushService. Fügen Sie Code ähnlich dem folgenden Code-Snippet früh in Ihrem Hauptcode-Text 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 NowPushSDK.makePushService() -Methode 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 für den Empfang von Push-Benachrichtigungen identifiziert. Damit eine Anwendung Push-Benachrichtigungen erhalten kann, müssen Sie dieses Token mit NowPushService registrieren. Fügen Sie in Ihrer Android -Anwendung eine Funktion ähnlich dem folgenden Code-Fragment hinzu. Stellen Sie sicher, dass Sie PushAppName in den Namen Ihrer Anwendung Android ändern. Diese Anwendung muss bei Ihrer ServiceNow® -Instanz 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 registerPushToken() finden Sie unter NowPushService – registerPushToken(pushToken: String, pushApp: String, successCallback: Runnable, errorCallback: Consumer<Throwable> ).
Heben Sie die Registrierung des Push-Tokens auf
Sie müssen die Registrierung des Push-Tokens aufheben, wenn der Benutzer Ihre Anwendung verlässt, z. B. wenn sich der Benutzer abmeldet. Verwenden Sie Code ähnlich dem folgenden Code-Fragment, 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: String, pushApp: String, successCallback: Runnable, errorCallback: Consumer<Throwable> ).
Implementieren Sie den FirebaseMessagingService
Sie müssen den FirebaseMessagingService in Ihrer Anwendung implementieren. Befolgen Sie die Anweisungen in der Android Firebase-Dokumentation, um diesen Service einzurichten und zu implementieren.
Überschreiben Sie nach dem Setup die Methode onMessageReceived() und übergeben Sie RemoteMessage an NowPushService. Wenn NowPushService die Benachrichtigung erkennt, wird sie verarbeitet und das Benachrichtigungsobjekt für die zu verarbeitende Anwendung zurückgegeben. Derzeit ist die einzige implementierte Benachrichtigung NowPushVirtualAgent. 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, successCallback: Consumer<NowPushPayload> , errorCallback: Verbraucher<Throwable> ).
Darüber hinaus müssen Sie onNewToken(token: String)überschreiben. Stellen Sie sicher, dass Sie das Token an pushService.registerPushToken() übergeben, ähnlich wie im Abschnitt „Registrieren des Push-Tokens“.