Message Center Overview
The default Message Center is available for iOS and Android SDK 7.0.0 or later. Minimal integration is required, and basic theming options are supported.
By default, when the app receives a push notification carrying a Message Center Action, the Message Center will be automatically displayed in a modal view controller. The Message Center can also be displayed manually with a simple method call on the UAMessageCenter instance. By wiring this method call to a button in your app, you can quickly produce a user-initiated Message Center with no additional effort.
Display message center
MessageCenter.shared().showMessageCenter()
MessageCenter.shared().showMessageCenter();
MessageCenter.shared.display()
[UAMessageCenter.shared display];
Airship.messageCenter.display()
Airship.onInboxUpdated
.listen((event) => debugPrint('Inbox updated'));
Airship.onShowInbox
.listen((event) => debugPrint('Navigate to app's inbox'));
Airship.onShowInboxMessage
.listen((messageId) => debugPrint('Navigate to message $messageId'));
InboxMessage message = messages[0];
void onInboxMessageViewCreated(InboxMessageViewController controller) {
controller.loadMessage(message);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Message: $message.title'),
),
body: Container(
child: InboxMessageView(onViewCreated: onInboxMessageViewCreated),
height: 300.0,
)
));
}
UAirship.displayMessageCenter();
Airship.Instance.DisplayMessageCenter()
Airship.messageCenter.display();
UAirship.Shared.DisplayMessageCenter();
Override default display
The Airship SDK will default to showing the provided MessageCenterActivity
. A custom show behavior can be accomplished by providing a
MessageCenter.OnShowMessageCenterListener
listener during takeOff:
MessageCenter.shared().setOnShowMessageCenterListener { messageId: String? ->
// Show the message center (messageId is optional)
true
}
The Airship SDK will default to showing the provided MessageCenterActivity
. A custom show behavior can be accomplished by providing a
MessageCenter.OnShowMessageCenterListener
listener during takeOff:
MessageCenter.shared().setOnShowMessageCenterListener(messageId -> {
// Show the message center (messageId is optional)
return true;
});
UAMessageCenterDisplayDelegate
with the custom Message Center implementation’s view controller. This is necessary to ensure that the modal Message Center is not displayed on top of the custom Message Center when a message is received.UAMessageCenterDisplayDelegate
with the custom Message Center implementation’s view controller. This is necessary to ensure that the modal Message Center is not displayed on top of the custom Message Center when a message is received.First disable the OOTB UI for Message Center.
Airship.messageCenter.setAutoLaunchDefaultMessageCenter(false);
When disabled, the plugin will generate DisplayMessageCenter
events
instead of showing any OOTB UI when the Message Center is requested to
display.
Next, add a listener to handle the display events:
Airship.addListener(EventType.DisplayMessageCenter, (event) => {
if (event.messageId) {
// deep link to message
} else {
// deep link to message center
}
});
// Not supported
// Not supported
Airship.Instance.OnMessageCenterDisplay += OnMessageCenterDisplay;
static void OnMessageCenterDisplay(object sender, MessageCenterEventArgs e)
{
//Navigate to custom UI
}
// Not supported
// Not supported
Fetch messages
val messages = MessageCenter.shared().inbox.messages
MessageCenter.shared().getInbox().getMessages();
let messages = MessageCenter.shared.messageList.messages
NSArray *messages = UAMessageCenter.shared.messageList.messages;
Airship.messageCenter.getMessages().then((messages) => {
console.log('Inbox messages: ', messages);
});
List<InboxMessage> messages = await Airship.inboxMessages;
UAirship.getInboxMessages();
var messages = Airship.Instance.InboxMessages;
Airship.messageCenter.messages
Airship.Shared.InboxMessages();
Refresh messages
MessageCenter.shared().inbox.fetchMessages { success ->
}
MessageCenter.shared().getInbox().fetchMessages(new Inbox.FetchMessagesCallback() {
});
MessageCenter.shared.messageList.retrieveMessageList(successBlock: {
// handle success
}, withFailureBlock: {
// handle failure
})
[UAMessageCenter.shared.messageList retrieveMessageListWithSuccessBlock:^{
// handle success
} withFailureBlock:^{
// handle failure
}];
Airship.messageCenter
.refreshMessages()
.then(() => {
console.log('Inbox refreshed');
})
.catch((err) => {
console.log('Unable to refresh inbox: ', err);
});
Airship.refreshInbox();
UAirship.refreshInbox();
Airship.Instance.FetchInboxMessages(success =>
{
// ...
});
// Not supported
Airship.Shared.RefreshInbox()
Mark message read
MessageCenter.shared().inbox.markMessagesRead(setOf(messageId))
Message message = MessageCenter.shared().getInbox().getMessage(messageId);
message.markRead();
let message = MessageCenter.shared.messageList.message(forID: messageID)
MessageCenter.shared.messageList.markMessagesRead([message as Any]) {}
UAInboxMessage *message = [[UAMessageCenter shared].messageList messageForID:messageId];
[[UAMessageCenter shared].messageList markMessagesRead:@[message] completionHandler:^(){}];
Airship.messageCenter
.markMessageRead('message-id')
.then(() => {
console.log('Message marked as read');
})
.catch((err) => {
console.log('Unable to mark message as read: ', err);
});
Airship.markInboxMessageRead(messages[0]);
UAirship.markInboxMessageRead("theInboxMessageID");
Airship.Instance.MarkMessageRead("message-id");
Airship.messageCenter.markMessageRead("message-id")
Airship.Shared.MarkInboxMessageRead("message-id");
Delete message
MessageCenter.shared().inbox.markMessagesDeleted(setOf(messageId))
Message message = MessageCenter.shared().getInbox().getMessage(messageId);
message.delete();
let message = MessageCenter.shared.messageList.message(forID: messageID)
MessageCenter.shared.messageList.markMessagesDeleted([message as Any]) {}
UAInboxMessage *message = [[UAMessageCenter shared].messageList messageForID:messageId];
[[UAMessageCenter shared].messageList markMessagesDeleted:@[message] completionHandler:^(){}];
Airship.messageCenter
.deleteMessage('message-id')
.then(() => {
console.log('Message deleted');
})
.catch((err) => {
console.log('Unable to delete message: ', err);
});
Airship.deleteInboxMessage(messages[0]);
UAirship.deleteInboxMessage("theInboxMessageID");
using AirshipDotNet;
Airship.Instance.DeleteMessage("message-id")
using UrbanAirship.NETStandard;
Airship.Instance.DeleteMessage("message-id")
Airship.messageCenter.deleteMessage("message-id")
Airship.Shared.DeleteInboxMessage("message-id");
Categories