iOS Messaging SDK - Version 3.1

These are the main feature releases available in the Mobile App Messaging SDK version 3.1 for iOS.

Version 3.1 planned roll-out: March 18th 2018

Version Specific System Requirements Document

New functionalities

Campaign for messaging

Type: Developer Experience Feature

Available to all customers? Yes.

The addition of campaigns for mobile app and web messaging will allow brands to manage their engagements easily and efficiently across these channels, targeting customers based on unauthenticated attributes or locations and routing them to a desired skill.

Being able to track customer activity in all areas of the brand app and provide information on these interactions to LiveEngage boosts agent efficiency and enables more accurate reporting.

Using the Monitoring APIs, brands can:

  1. Report on the customer’s journey inside the app

  2. Get engagements based on the reported SDEs

  3. Route conversations to a specific skill (based on engagements)

Monitoring APIs

The below APIs enable brands to use Campaigns for Messaging inside the brand’s app

New APIs Description
Added monitoringInitParams to LPMessagingSDK.initialize() → func initialize(_ brandID: String? = nil, monitoringInitParams: LPMonitoringInitParams? = nil) throws Added new optional monitoringInitParams: LPMonitoringInitParams object to allow using Monitoring. SDK can be initialized once without monitoringInitParams and then have another initialize call using this param. Passing monitoringInitParams is mandatory when using MonitoringAPI capabilities
Added to LPMessasgingSDK.instance.getConversationBrandQuery → func getConversationBrandQuery(_ brandID: String, campaignInfo: LPCampaignInfo? = nil) -> ConversationParamProtocol Added new optional campaignInfo: LPCampaignInfo object to be able to pass a new Campaign to conversation. Campaign includes Engagement info which allows to control the consumer's routing.
LPCampaignInfo initialization: LPCampaignInfo(campaignID: Int, engagementID: Int, engagementContextID: String, sessionID: String? = nil, visitorID: String? = nil) Object to be able to pass a new Campaign to conversation. Campaign includes Engagement info which allows to control the consumer's routing. Note: sessionID and visitorID are optional parameters. If these values are not used or left as nil, then the SDEs will only be sent for use in routing rules and conditions. They will not appear to the agent. If you add them into the constructor then the SDEs will be visible to the agent.
LPMonitoringAPI → Added new API interface which should be called using: LPMonitoringAPI.instance.xxxx func getEngagement(consumerID: String?, monitoringParams: LPMonitoringParams?, completion: @escaping (_ response: LPGetEngagementResponse)->(), failure: @escaping (_ error: NSError)->()) Use this API to get an engagement for a consumer in an appInstallationId context. When calculating eligibility the decision is based on the SDEs and other parameters. Based on messaging campaign concept As an optional parameter, you can pass SDE Data which includes Entry Points and Engagement Attributes for routing the conversation. Parameters:
  • consumerID: an optional brand app consumer ID to get the engagement for
  • monitoringParams: an instance of includes optional Array of Entry Points and an optional dictionary of Engagement Attributes
  • completion: completion block with response of type LPGetEngagementResponse. This response includes sessionID and visitorID along with LPEngagementDetails object.
  • failure: failure block with an error in case the request fails
func sendSDE(consumerID: String, monitoringParams: LPMonitoringParams, completion: @escaping (_ response: LPSendSDEResponse)->(), failure: @escaping (_ error: NSError)->()) Use this API to report an engagement attributes (SDEs) for a consumer in an appInstallationId context. Parameters:
  • consumerID: an optional brand app consumer ID to get the engagement for
  • monitoringParams: an instance of includes optional Array of Entry Points and an optional dictionary of Engagement Attributes
  • completion: completion block with response of type LPGetEngagementResponse. This response includes sessionID and visitorID along with LPEngagementDetails object.
  • failure: failure block with an error in case the request fails

Please note: while the APIs are already available in the SDK, the backend will be available in mid-April. Please consult your account team before using the APIs.

The following additional conditions and configurations are required:

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
Yes Yes Yes Yes Yes
Conversation History Control

Type: Developer Experience Feature

Available to all customers? Yes.

To enhance control of customer data retention, scalability and performance, and support the EU’s General Data Protection Regulation (GDPR), open conversations will be loaded from a real time service while closed conversations will be loaded from a history service.

The change will be seamless for brands who upgrade to SDK version 3.1. Brands choosing not to upgrade to SDK v3.1 will be able to view the conversation history from the last 14 days. The history stored on the consumer’s device will also be available.

The following additional conditions and configurations are required:*

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
Yes No No No No
History and Active Conversation View

Type: Developer Experience Feature

Available to all customers? Yes.

New APIs will give brands control over the conversations presented in the conversation window. For example, brands can choose to present only the last 180 days of conversation history.

These APIs can be used together with getengagement (Monitoring APIs) to decide how to present conversations history according to whether there is an open conversation or not. For example, if there is no open conversation, brands can present a ‘View conversation history’ button which will present only the closed conversations from the last 180 days.

The new APIs allows:

  • Getting an indication if there is an open conversation or not (Monitoring APIs)

  • Controlling which conversations will be presented by status (open\closed)

  • Controlling the time frame of presented conversations (by days)

  • When using historyConversationsMaxDays, LPConversationHistoryMaxDaysDateType will decide if to filter by the conversations' start date or end date. When not providing a value, startConversationDate will be the default.

History and Active Conversation APIs
New APIs Description
LPConversationViewParams → LPConversationHistoryControlParam → historyConversationsStateToDisplay: LPConversationsHistoryStateToDisplay? Allows to control which conversation will be presented when opening the conversation screen, by status (open or closed)
LPConversationViewParams → LPConversationHistoryControlParam → historyConversationMaxDaysType: LPConversationHistoryMaxDaysDateType? = startConversationDate When using historyConversationsMaxDays, LPConversationHistoryMaxDaysDateType will decide if to filter by the conversations' start date or end date. When not providing a value, startConversationDate will be the default.
LPConversationViewParams → LPConversationHistoryControlParam → historyConversationsMaxDays: UInt? Allows to control the amount of conversations history that will be presented when opening the conversation screen by days.

The following additional conditions and configurations are required:*

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
Yes No No No No

New Strings Localizations

New Strings Localization Description
conversationEmptyState There are currently no conversations at this time

New parameters

Branding and configuration parameters

Type: Parameters

Available to all customers? Yes

The Mobile App Messaging SDK v3.1 exposes additional branding configuration parameters.

The new parameters may control text, padding of conversation UI elements and more.

Parameter name and default value Description Image
LPConfig → csatYesNoButtonsCornerRadius: Double = 25 Makes CSAT Yes/No buttons corner radiuses customizable (through LPConfig).
LPConfig → messageStatusNumericTimestampOnly: Bool = false When false (default), timestamps will display information relative to when sent/distributed/read (e.g. 'sent 5 minutes ago'. When true, will show as numeric only (e.g. '11:32').
LPConfig → photoSharingMenuCameraImage: UIImage Custom Camera image in the photo sharing menu.
LPConfig → photoSharingMenuLibraryImage: UIImage Custom Library image in the photo sharing menu.
LPConfig → photoSharingOpenMenuImageButton: UIImage Photo sharing open menu custom button.
LPConfig → photoSharingCloseMenuImageButton: UIImage Photo sharing close menu custom button
LPConfig → conversationEmptyStateTextColor: UIColor() = black Color code for the empty state label

Key for items as follows:

Backend update: This feature requires an update to the backend.

Backend enablement: This feature requires items to be toggled on in the backend.

Backend configuration: This feature requires configuration in the backend.

SDK enablement: This feature requires items to be toggled on in the SDK.

SDK configuration: This features requires items to be configured in the SDK.

Return to the iOS Messaging SDK Release Notes