Last modified November 7, 2024 by Shelly Wolfe

Swrve Message Center API

The Swrve Message Center is an API for campaigns that have been downloaded from Swrve and are intended to be accessible in a way where the app user is in control of the message lifecycle. This guide describes how the Message Center API is presented for iOS, Android, and Unity.

Accessing the API

iOS - Swift

Once the Swrve instance is created in the AppDelegate as per the iOS Integration guide, retrieve a list all of the campaigns that the user qualifies for, and that are currently available, via let campaigns: [SwrveCampaign]:

let campaigns = SwrveSDK.messageCenterCampaigns()

The array contains a collection of SwrveCampaign objects. Each of these is an entry in the app’s message center.

iOS - Objective-C

Once the Swrve instance is created in the AppDelegate as per the iOS Integration guide, retrieve a list all of the campaigns that the user qualifies for, and that are currently available, via NSArray* campaigns:

NSArray* campaigns = [SwrveSDK messageCenterCampaigns];

The array contains a collection of SwrveCampaign objects. Each of these is an entry in the app’s message center.

Android - Kotlin

SwrveSDK.createInstance(this, <app_id>, "<api_key>")

The shared instance contains methods to list all of the campaigns that this user qualifies for, and that are available right now:

val campaigns: List<SwrveBaseCampaign> = SwrveSDK.getMessageCenterCampaigns()

The list contains a collection of SwrveBaseCampaign objects. Each of these is an entry in the app’s message center.

Android - Java

SwrveSDK.createInstance(this, <app_id>, "<api_key>");

The shared instance contains methods to list all of the campaigns that this user qualifies for, and that are available right now:

List<SwrveBaseCampaign> campaigns = SwrveSDK.getMessageCenterCampaigns();

The list contains a collection of SwrveBaseCampaign objects. Each of these is an entry in the app’s message center.

Unity

The Swrve shared instance object contains a reference that you can use to list all of the campaigns that this user qualifies for, and that are available right now:

List<SwrveBaseCampaign> campaigns = SwrveComponent.Instance.SDK.GetMessageCenterCampaigns();

The array contains a collection of SwrveBaseCampaign objects. Each of these is an entry in the app’s message center.

Web

The Swrve shared instance object contains a reference that you can use to list all of the campaigns that this user qualifies for, and that are available right now:

var campaigns = SwrveSDK.getMessageCenterCampaigns();

The array contains a collection of ISwrveBaseCampaign objects. Each of these is an entry in the app’s message center.


Campaign properties

Here are some examples of the campaign properties that are available in the Swrve Message Center API:

iOS - Swift

 let campaigns = SwrveSDK.messageCenterCampaigns()

// Get campaign at some position in a table list
  let campaign = campaigns[indexPath.row]
  let id = campaign.ID
  let name = campaign.name
  let subject = campaign.messageCenterDetails?.subject
  let dateStart = campaign.dateStart
  let dateEnd = campaign.dateEnd
  let priority = campaign.priority
  let downloadDate = campaign.downloadDate()
    
    // New message center details
   let messageCenterSubject = campaign.messageCenterDetails?.subject
   let messageCenterDescription = campaign.messageCenterDetails?.description
   let accessibilityText = campaign.messageCenterDetails?.imageAccessibilityText
   let messageCenterIconImage = campaign.messageCenterDetails?.image

iOS - Objective-C

NSArray *campaigns = [SwrveSDK messageCenterCampaigns];

// get campaign at some position in a table list 
SwrveCampaign *campaign  = [campaigns objectAtIndex:[indexPath row]]; 

NSUInteger ID = campaign.ID;
NSString *name = campaign.name;
NSString *subject = campaign.messageCenterDetails.subject;
NSDate *dateStart = campaign.dateStart;
NSDate *dateEnd = campaign.dateEnd;
NSNumber *priority = campaign.priority;
NSDate *downloadDate = [campaign downloadDate];
NSString *messageCenterSubject =  campaign.messageCenterDetails.subject;
NSString *messageCenterDescription = campaign.messageCenterDetails.description;
NSString *accessibilityText = campaign.messageCenterDetails.imageAccessibilityText;
UIImage *messageCenterIconImage = campaign.messageCenterDetails.image;

Android - Kotlin

val campaigns = SwrveSDK.getMessageCenterCampaigns()

// Get campaign at some position in a table list
val campaign = campaigns[adapter.getItem(getSelectedItemPosition())] as SwrveBaseCampaign

val id = campaign.id
val name = campaign.name
val dateStart = campaign.startDate
val dateEnd = campaign.endDate
val inAppCampaign = campaign as SwrveInAppCampaign
val priority = inAppCampaign.message.priority
val downloadDate = campaign.downloadDate
val messageCenterSubject = campaign.messageCenterDetails.subject
val messageCenterDescription = campaign.messageCenterDetails.description
val accessibilityText = campaign.messageCenterDetails.imageAccessibilityText
val messageCenterIconImage = campaign.messageCenterDetails.image

Android - Java

List campaigns = SwrveSDK.getMessageCenterCampaigns();

// get campaign at some position in a table list 
SwrveBaseCampaign campaign = campaigns.get(adapter.getItem(getSelectedItemPosition()));

int ID = campaign.getId();
String name = campaign.getName();
Date dateStart = campaign.getStartDate();
Date dateEnd = campaign.getEndDate();
SwrveInAppCampaign inAppCampaign = (SwrveInAppCampaign)campaign;
int priority = inAppCampaign.getMessage().getPriority();
Date downloadDate = campaign.getDownloadDate();
String messageCenterSubject =  campaign.getMessageCenterDetails().getSubject();
String messageCenterDescription = campaign.getMessageCenterDetails().getDescription();
String accessibilityText =campaign.getMessageCenterDetails().getImageAccessibilityText();
Bitmap messageCenterIconImage = campaign.getMessageCenterDetails().getImage();

Unity

// Example get message center campaign and properties.

List<SwrveBaseCampaign> campaigns = SwrveComponent.Instance.SDK.GetMessageCenterCampaigns();

SwrveBaseCampaign campaign = campaigns[0];

int ID = campaign.Id;
String name = campaign.Name;
String subject = campaign.Subject; // (this is deprecated, use new MessageCenterSubject)
Date dateStart = campaign.StartDate;
Date dateEnd = campaign.EndDate;
int priority = campaign.getPriority;
Date downloadDate = campaign.DownloadDate;
String messageCenterSubject = campaign.MessageCenterDetails.Subject;
String messageCenterDescription = campaign.MessageCenterDetails.Description;
String accessibilityText = campaign.MessageCenterDetails.ImageAccessibilityText;
Texture2d messageCenterIconImage = campaign.MessageCenterDetails.Image;

The following parameters are supported for in-app message and embedded campaign creation. Swrve’s Message Center API returns these properties regardless of the SDK version:

Parameter Description
ID A unique identifier.
name The name of the campaign, which defaults to Empty.
state The state of the campaign.
minDelayBetweenMsgs The minimum interval between different campaign messages.
messageCenter A flag that indicates a message center campaign is sent from the message center.
subject The message center campaign subject. This should match the campaign description.

The Message Center API returns the below properties in the following SDKs: iOS SDK 8.1.0, Android SDK 10.2.0, Unity SDK 9.0.0, and React Native SDK 4.0.0.

The following parameters are not supported by Swrve’s Web SDK and are currently only available for in-app message campaigns.

They are exposed in the new SwrveMessageCenterDetails object and the values are configurable through the in-app message campaign Content page, on the Message center details tab:

Parameter Description
subject The variant-specific subject of the campaign that corresponds to the Subject value set in the campaign’s Content page.
description The description of the campaign that corresponds to the Description value set in the campaign’s Content page.
image
Types:
iOS: UIImage
Android: Bitmap
Unity: Texture2d
The message center image that corresponds to the thumbnail image set in the campaign’s content page. This property includes the image type data, ready to load into the image component.
imageUrl The personalized image URL. This is used for reference as the image is downloadable from the cache.
imageSha The imageSha is available if the thumbnail image has been uploaded into the dashboard.
accessibilityText The alt text value provided for the image.

The following properties have been added to the existing SwrveCampaign object.

Parameter Description
dateEnd The end date of the campaign.
priority The priority of the campaign in relation to other message center campaigns.
downloadDate The date and time the campaign is downloaded to the user’s device. If the campaign is downloaded to the device multiple times, this value reflects the first time the campaign was downloaded.
name The name of the campaign.
Note: This property returned an empty value in previous versions of the Swrve SDKs.

Parameter mapping to message center details

The Message Center API parameters relate to the following options in the Message center details tab:

Message center details Message Center API parameter
Subject subject
Description description
Thumbnail image – The actual image, whether downloaded from the specified URL or uploaded to the dashboard. In the event the SDK cannot download the image from the URL, this represents the fallback image (if provided).
Upload file – If a thumbnail image was uploaded to the dashboard. imageSha – If a URL was provided as the thumbnail image, then this represents the uploaded fallback image.
URL – If a thumbnail image was provided as a URL. imageUrl
Alt text accessibilityText

Campaign lifecycle examples

The following examples illustrate how to use the Message Center API to manage the message lifecycle in your app, from displaying the campaign subject line and getting its status, to displaying a message or removing it from visibility.

Subject line

To get the subject line of the campaign to display in the app’s message center, use the following:

iOS - Swift

let item = campaigns[0]
let subject = item?.messageCenterDetails?.subject

iOS - Objective-C

SwrveCampaign *item = (SwrveCampaign*)[campaigns objectAtIndex:0];
NSString* subject = item.subject;

Android - Kotlin

val item = campaigns[0]
val subject = item.messageCenterDetails?.subject

Android - Java

SwrveBaseCampaign item = campaigns.get(0);
String subject = item.getMessageCenterDetails().getSubject();

Unity

SwrveBaseCampaign item = campaigns[0];
string subject = item.Subject;

Web

var item = campaigns[0];
var subject = item.subject;

Campaign status

To retrieve the status associated with each message center entry, use the following:

iOS - Swift

let status = item.state.status

Possible values are:

Value Description
unseen = 1 Campaign hasn’t been seen by the user.
seen = 2 Campaign has been seen at least once by the user.
deleted = 3 Campaign has been deleted and won’t appear again in the inbox.

iOS - Objective-C

SwrveCampaignStatus status = item.state.status;

Possible values are:

Value Description
SwrveCampaignStatusUnseen = 1 Campaign hasn’t been seen by the user.
SwrveCampaignStatusSeen = 2 Campaign has been seen at least once by the user.
SwrveCampaignStatusDeleted = 3 Campaign has been deleted and won’t appear again in the inbox.

Android - Kotlin

val status: SwrveCampaignState.Status = item.getStatus()

Possible values are:

Value Description
SwrveCampaignState.Status.Unseen Campaign hasn’t been seen by the user.
SwrveCampaignState.Status.Seen Campaign has been seen at least once by the user.
SwrveCampaignState.Status.Deleted Campaign has been deleted and won’t appear again in the inbox.

Android - Java

SwrveCampaignState.Status status = item.getStatus();

Possible values are:

Value Description
SwrveCampaignState.Status.Unseen Campaign hasn’t been seen by the user.
SwrveCampaignState.Status.Seen Campaign has been seen at least once by the user.
SwrveCampaignState.Status.Deleted Campaign has been deleted and won’t appear again in the inbox.

Unity

SwrveCampaignState.Status status = item.Status;

Possible values are:

Value Description
SwrveCampaignState.Status.Unseen Campaign hasn’t been seen by the user.
SwrveCampaignState.Status.Seen Campaign has been seen at least once by the user.
SwrveCampaignState.Status.Deleted Campaign has been deleted and won’t appear again in the inbox.

Web

var status = item.status;

Possible values are:

Value Description
“unseen” Campaign hasn’t been seen by the user.
“seen” Campaign has been seen at least once by the user.

Show campaign

The SDK is responsible for rendering and reacting to the campaign, so this capability is provided by a single API call:

iOS - Swift

 
SwrveSDK.showMessageCenter(item)

iOS - Objective-C

[SwrveSDK showMessageCenterCampaign:item];

Android - Kotlin

SwrveSDK.showMessageCenterCampaign(item)

Android - Java

SwrveSDK.showMessageCenterCampaign(item);

Unity

SwrveComponent.Instance.SDK.ShowMessageCenterCampaign(item);

Web

SwrveSDK.showMessageCenterCampaign(item);

Remove campaign

Finally, to remove the campaign from visibility so it doesn’t appear in the message center again, use the following:

iOS - Swift

 SwrveSDK.removeMessageCenter(item)

iOS - Objective-C

[SwrveSDK removeMessageCenterCampaign:item];

Android - Kotlin

SwrveSDK.removeMessageCenterCampaign(item)

Android - Java

SwrveSDK.removeMessageCenterCampaign(item);

Unity

SwrveComponent.Instance.SDK.RemoveMessageCenterCampaign(item);

General use case

iOS - Swift

Use the let array: [SwrveCampaign] that the SwrveSDK.messageCenterCampaigns() call returns as a data provider to a table view, or custom view, for presentation in the app proper.

iOS - Objective-C

Use the NSArray* that the [Swrve messageCenterCampaigns] call returns as a data provider to a table view, or custom view, for presentation in the app proper.

Android - Kotlin

Use the list that the SwrveSDK.getMessageCenterCampaigns() call returns as the source of an ArrayAdapter<SwrveBaseCampaign> used in a ListView, or custom view, for presentation in the app proper.

Android - Java

Use the list that the SwrveSDK.getMessageCenterCampaigns() call returns as the source of an ArrayAdapter<SwrveBaseCampaign> used in a ListView, or custom view, for presentation in the app proper.

Unity

Use the list that the SDK returns to populate a ListLayout inside a Canvas and ScrollRect to display the items.

When the app user selects a campaign in the message center view, the app should call the showMessageCenterCampaign API call to present it to the user.

When the user deletes the entry in the message center view, then the app should call removeMessageCenterCampaign for the selected campaign.