Using Inbox Service
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.
Creating an Instance
Factory Extension With SSL Validation Strategy
Convenience factory method that will return a new instance. A new OkHttpClient
will be created based on the chosen SSLValidationStrategy
in the last parameter.
fun PowerAuthSDK.createInboxService(appContext: Context, baseURL: String, strategy: SSLValidationStrategy): IInboxService
appContext
- application contextbaseURL
- address, where your operations server can be reachedstrategy
- a strategy used when validating HTTPS requests. The following strategies can be used:SSLValidationStrategy.default
SSLValidationStrategy.noValidation
SSLValidationStrategy.sslPinning
Optional parameters:
userAgent
- Optional default user agent used for each request
Factory Extension With OkHttpClient
Convenience factory method that will return a new instance with provided OkHttpClient
that you can configure on your own.
fun PowerAuthSDK.createInboxService(appContext: Context, baseURL: String, httpClient: OkHttpClient): IInboxService
appContext
- application contextbaseURL
- address, where your operations server can be reachedhttpClient
-OkHttpClient
instance used for API requests
Optional parameters:
userAgent
- Optional default user agent used for each request
Inbox Service Usage
Get Number of Unread Messages
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
}
}
Get a List of Messages
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
}
}
Get Message Detail
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
}
}
Set Message as Read
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
}
}
Error handling
Every error produced by the Inbox Service is of a WMTError
type. For more information see detailed error handling documentation.