Push-Benachrichtigungen in einrichten Android Anwendung
Zusätzlich zu den Aufgaben, die Sie für ausführen müssen ServiceNow® Instanz um eine Push-Benachrichtigung zu konfigurieren, müssen Sie auch bestimmten Code in Ihren einfügen Android Anwendung.
Erstellen Sie den NowSDK NowPushService
Eine der ersten Schritte, die in Ihrer Anwendung ausgeführt werden müssen, besteht darin, das NowSDK abzurufen NowPushService . Fügen Sie Code ähnlich dem folgenden Fragment frühzeitig 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 }
}
}
Für zusätzliche Informationen zu NowPushSDK.makePushService() Methode, siehe 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, um Push-Benachrichtigungen zu erhalten. Damit eine Anwendung eine Push-Benachrichtigung erhält, müssen Sie dieses Token mit registrieren NowPushService . Fügen Sie eine Funktion hinzu, die dem folgenden Code-Fragment in Ihrem ähnelt Android Anwendung. Stellen Sie sicher, dass Sie sich ändern PushAppNameAn den Namen Ihres Android Anwendung. Diese Anwendung muss bei registriert sein ServiceNow® Instanz.
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)
})
}
Für zusätzliche Informationen zu RegisterPushToken() Methode, siehe NowPushService – registerPushToken(pushToken: Zeichenfolge, pushApp: Zeichenfolge, succCallback: Ausführbar, errorCallback: Consumer<Throwable>).
Heben Sie die Registrierung des Push-Tokens auf
Sie müssen die Registrierung des Push-Tokens aufheben, wenn der Anwender Ihre Anwendung verlässt, z. B. wenn sich der Anwender abmeldet. Verwenden Sie Code, der dem folgenden Codeausschnitt ähnelt, um die Registrierung des Push-Tokens aufzuheben. Stellen Sie sicher, dass Sie sich ändern PushAppNameAn den Namen Ihres Android Anwendung.
pushService.unregisterPushToken(token, "PushAppName", {
Log.v(TAG, "Successfully unregistered push token")
}, { e ->
Log.e(TAG, "Error unregistering push", e)
})
Für zusätzliche Informationen zu UnregisterPushToken() Methode, siehe NowPushService – unregisterPushToken(pushToken: Zeichenfolge, pushApp: Zeichenfolge, succCallback: Ausführbar, errorCallback: Consumer<Throwable>).
Implementieren Sie den FirebaseMessagingService
Sie müssen implementieren FirebaseMessagingService In Ihrer Anwendung. Befolgen Sie zum Einrichten und Implementieren dieses Service die Anweisungen im Android Firebase-Dokumentation .
Überschreiben Sie nach dem Setup den OnMessageReceived() Methode und übergeben RemoteMessageBis zu NowPushService . Wenn NowPushService Erkennt die Benachrichtigung, verarbeitet sie und gibt das Benachrichtigungsobjekt zurück, das von der Anwendung verarbeitet werden soll. Derzeit ist die einzige implementierte Benachrichtigung NowPushVirtualAgent . Eine unbekannte Benachrichtigung gibt einen zurück Nicht SupportedPushError Objekt.
//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) })
}
}
Für zusätzliche Informationen zu HandlePush() Methode, siehe NowPushService – handlePush(remoteMessage: RemoteMessage, succCallback: Consumer<NowPushPayload>, errorCallback: Consumer<Throwable>).
Außerdem müssen Sie überschreiben OnNewToken(Token: Zeichenfolge) . Stellen Sie sicher, dass Sie das Token an übergeben PushService.registerPushToken() , Ähnlich wie im Abschnitt „Push-Token registrieren“.