Inbox
In this article you'll learn how to build an app inbox with all the options at your disposal to create a great messaging experience for your users.
With our library it's extremely easy to implement an in-app inbox. Implementing an inbox increases considerably the engagement rate of your notifications simply because messages will always be available inside your app.
Device-level inbox
The standard approach is to use the device-level inbox. Each device will have its own independent inbox, regardless of the associated user. The device-level inbox is available via the notificare_inbox
package. The inbox itself is exposed via events from NotificareInbox
, so it is really easy to hook up your views to a list of inbox items, for example:
NotificareInbox.InboxUpdated += (sender, args) =>
{
// Do something with the items.
};
In the same way, you can listen for the number of unread messages.
NotificareInbox.BadgeUpdated += (sender, args) =>
{
// Do something with the badge.
};
If you want to get the data at any point in time, you can still get the items and the badge in the inbox.
// Items
var items = NotificareInbox.Items;
// Badge
var badge = NotificareInbox.Badge;
Managing inbox items
Assuming that you hold a reference to an item, to open an inbox item you would simply do something like this:
NotificareInboxItem item;
var notification = await NotificareInbox.OpenAsync(item);
// Optional: Present the notification with Push UI.
#if ANDROID
NotificarePushUI.PresentNotification(notification, Platform.CurrentActivity!);
#elif IOS
NotificarePushUI.PresentNotification(notification, Platform.GetCurrentUIViewController()!);
#endif
To remove items from the inbox you would invoke the following method:
NotificareInboxItem item;
await NotificareInbox.RemoveAsync(item);
Additionally, you can also mark a message as read by invoking the following method:
NotificareInboxItem item;
await NotificareInbox.MarkAsReadAsync(item);
Or mark all messages as read by invoking the following method:
await NotificareInbox.MarkAllAsReadAsync();
To remove all items in the inbox you would do the following:
await NotificareInbox.ClearAsync();