Inbox Service is responsible for managing messages in the Inbox. The inbox is a simple one way delivery system that allows you to deliver messages to the user.
Note: Before using Inbox Service, you need to have a PowerAuthSDK object available and initialized with a valid activation. Without a valid PowerAuth activation, the service will return an error.
Inbox Service communicates with the Mobile Token API.
The preferred way of instantiating Operations Service is via WultraMobileToken class.
See: Example Usage
In case you need to create more customized instance. You can do so with an initializer.
val inboxService = InboxService(
powerAuthSDK,
appContext,
httpClient,
baseURL,
tokenProvider,
userAgent,
gsonBuilder
)powerAuthSDK- PowerAuthSDK instanceappContext- application contexthttpClient-OkHttpClientwith following SSLValidationStrategySSLValidationStrategy.defaultSSLValidationStrategy.noValidationSSLValidationStrategy.sslPinning
baseURL- address, where your operations server can be reached (ending with/enrollment-serverin the default setup)
Optional parameters:
For these, if null is provided, default internal implementation is provided.
tokenProvider- Provider that provides a valid PowerAuth token from token store for api communication.userAgent- Optional default user agent used for each requestgsonBuilder- Optional GSON builder for custom deserialization
To get the number of unread messages, use the following code:
inboxService.getUnreadCount {
it.onSuccess {
if (it.countUnread > 0) {
print("There are ${it.countUnread} new message(s) in your inbox")
} else {
print("Your inbox is empty")
}
}.onFailure {
// Process error
}
}The Inbox Service provide a paged list of messages:
// First page is 0, next 1, etc...
inboxService.getMessageList(pageNumber = 0, pageSize = 50, onlyUnread = false) {
it.onSuccess { messages ->
if (messages.count < 50) {
// This is the last page
}
// Process messages
}.onFailure {
// Process error
}
}To get the list of all messages, call:
inboxService.getAllMessages {
it.onSuccess { messages ->
print("Inbox contains the following message(s):")
for (msg in messages) {
print(" - ${msg.subject}")
print(" * ID = ${msg.id}")
}
}.onFailure {
// Process error
}
}Each message has its unique identifier. To get the body of the message, use the following code:
let messageId = messagesList.first!.id
inboxService.getMessageDetail(messageId) {
it.onSuccess {
print("Received message:")
print("${it.subject}")
print("${it.body}")
}.onFailure {
// Process error
}
}To mark the message as read by the user, use the following code:
let messageId = messagesList.first!.id
inboxService.markRead(messageId: messageId) {
it.onSuccess {
// OK
}.onFailure {
// Process error
}
}Alternatively, you can mark all messages as read:
inboxService.markAllRead {
it.onSuccess {
// OK
}.onFailure {
// Process error
}
}Every error produced by the Inbox Service is of a WMTError type. For more information see detailed error handling documentation.