iOS Messaging SDK - Version 2.7.0

These are the main feature releases available in the Mobile App Messaging SDK version 2.7 for iOS. Version 2.7 roll-out: September 3rd 2017

Version Specific System Requirements Document

New functionalities

Structured content enablement (Beta)

*This version of the SDK delivers structured content enablement only; the feature will be made fully productive in October.

Description Structured message templates and elements, such as cards, images and deep linking buttons, turn a simple app interaction into a conversational user experience. They support a huge variety of messaging interactions and enable:

  • Clearer communication with bots, so commands are more easily understood.
  • The ability to trigger actions, such as deep-linking navigation, confirmations and transactions, directly from a conversation
  • Improved sales through product promotion and simplification of the purchasing process
  • An overall improved and more efficient service - just what consumers expect from messaging

SDK 2.7 structured content capabilities Structured content capabilities are being gradually rolled out during September-October 2017. Dedicated documentation for structured content will be published as part of the gradual rollout.

Mobile App Messaging SDK v2.7 has a structured content renderer for the following elements:

  • Image
  • Text
  • Button
  • Clicks (actions and meta-data)

Full list of elements dictionary will be published during the gradual rollout.

What does enablement mean? Until rollout is complete, the structured content capability in SDK v2.7 is flagged as a Beta feature. The feature has an enablement toggle in the SDK which is disabled by default.

The toggle may be switched on as part of the SDK release within the host app, however it is highly recommended not to release the SDK in the host app with structured content enabled until end to end flow has been fully tested on the brand’s account.

In addition to structured content enablement, SDK v2.7 also has a few branding properties and one callback which can be configured and used.

The following additional conditions and configurations are required:*

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
Yes Yes Yes Yes Yes
Tablet split-screen supportability

To ensure that consumers using tablets can connect with brands while enjoying the tablet experience, brands can enable tablet applications to host the conversation window within an application page, as a fragment for Android or viewcontroller for iOS.

Until now the SDK has provided support for a full page layout for messaging conversations. SDK 2.7 provides full support for conversations in a split-screen with viewcontroller / fragment modes. Brands can own the wrapper and host the conversation in split-screen.

A full list of supported and certified devices can be found in the LiveEngage System Requirements document. The following additional conditions and configurations are required:*

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A N/A
Connectivity status bar

The connectivity status bar ensures consumers are always kept informed about the status of their connection, including:

  • Online/ Offline status
  • Attempting to connect to LiveEngage service
  • Continuing attempt to connect to LiveEngage service
  • Retry

The following additional conditions and configurations are required*:

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A N/A
Secure form branding enhancements

To enable brands to adjust the secure form visuals to accurately reflect their brand experience, the following configurations are now available:

  • Secure form fonts
  • Bubble loader indicator color

The secure form is essentially a web page running in a web view, within the messaging conversation. As such, the web page may run predefined fonts which can be set by the SDK remotely.

By default, the font is set to Helvetica. However brands can choose from any of the fonts on the following secure form supported fonts list:

Aria, Arial, Arial Black, Bookman Old Style, Comic Sans MS, Courier New, Garamond, Georgia, Helvetica, HelveticaNeue, HelveticaNeue-Light, Impact, Lato, Lucida Console, Lucida Sans Unicode, MS Sans Serif, MS Serif, Palatino Linotype, Tahoma, Times New Roman, Trebuchet MS, Verdana.

The following additional conditions and configurations are required*:

  1. Secure forms should be configured and set on LE
  2. For fonts settings and bubble loading indicator :
Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A Yes
Message selection

When the consumer selects a message with a long tap, the background color of the message will change, to indicate to the user that it has been selected. The color of the selected message can be configured by the brand.

The following additional conditions and configurations are required*:

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A Yes
App level DB encryption

To protect and encrypt conversation data in DB on the application level, Jailbroken iPhone conversation data in DB is now protected with an app level key for encryption. Every message is now encrypted and decrypted in RunTime.

The following additional conditions and configurations are required*:

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A N/A
View-only mode

The SDK now offers a new RunTime mode in addition to the edit mode, known as view-only mode. View-only mode means consumers can see the full conversation, but the keyboard and text input area are not displayed. In this mode, new messages can arrive, but the consumer will not be able to respond. This mode gives brands greater control over how consumers are able to use messaging within the brand’s app. Future SDKs will support additional modes.

The following additional conditions and configurations are required*:

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A Yes
Photo sharing permissions callback

When a consumer shares photos during a conversation, a banner appears asking them to grant permission for the app to have access to their camera and/ or photo library.

If the consumer refuses permission, the SDK sends a callback to the host app. Brands are then able to run a customized and branded banner with a second request for the consumer to grant the appropriate photo sharing permissions.

In order to present a custom banner, brands can create and present a new UIAlertViewController as well as a UIView, and present them on the SDK container ViewController or the root UIWindow.

The following additional conditions and configurations are required*:

Backend update Backend enablement Backend configuration SDK enablement SDK configuration
N/A N/A N/A N/A Yes

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.

New properties

Structured content

The following properties for structured content can now be configured:

Name Description Default
structuredContentBubbleBorderWidth: Double Structured Content bubble border width in pixels. 1.0
structuredContentBubbleBorderColor: UIColor Structured Content bubble border color. #004dc9
enableStrucutredContent: Bool Enable or Disable toggle for Structured Content feature in conversations. false
Connectivity status bar

The following properties for the connectivity status bar can now be configured:

Name Description Default
connectionStatusConnectingBackgroundColor: UIColor Color code for the background of the connectivity status bar while connecting. #f5f5f5f2
connectionStatusConnectingTextColor: UIColor Color code for the text of the connectivity status bar while connecting. #46474a
connectionStatusFailedToConnectBackgroundColor: UIColor Color code for the background of the connectivity status bar when connection fails. #000000cc
connectionStatusFailedToConnectTextColor: UIColor Color code for the text of the connectivity status bar when connection fails. UIColor.white
Secure form branding

The following properties for the secure form branding can now be configured:

Name Description Default
secureFormCustomFontName: String Secure form custom font name to be used when the user is completing the secure form. If not set, the default font is Helvetica. Helvetica
secureFormHideLogo: Bool Hiding the secure form logo at the top of the form. false
secureFormBubbleLoadingIndicatorColor: UIColor Secure form loading indicator color when loading the form before opening. #46474a
Message selection branding

The following properties for the user avatar can now be configured:

Name Description Default
remoteUserBubbleLongPressOverlayColor: UIColor Color of the remote user's bubble overlay when the user long taps the bubble. The overlay will appear as long as the menu controller appears on the bubble. When the menu is dismissed, the overlay will disappear too. In order to show the overlay, “enableBubblesOverlayOnLongPress” should be true. UIColor.black
remoteUserBubbleLongPressOverlayAlpha: Float The Alpha of the remote user's bubble overlay when the user long taps the bubble. The value can be 0.0 - 1.0. The overlay will appear as long as the menu controller appears on the bubble. When the menu is dismissed, the overlay will disappear too. In order to show the overlay, enableBubblesOverlayOnLongPress should be true. 0.3
userBubbleLongPressOverlayColor: UIColor Color code for the background of the visitor bubble. UIColor.black
userBubbleLongPressOverlayAlpha: Float Color code for the outline color. 0.3

New classes

LPConversationViewParams

This class represents an object to determine the conversation mode, filter and container, for example, Container, Window or ViewOnly.

class LPConversationViewParams: NSObject {
 	var conversationQuery: ConversationParamProtocol!
    var containerViewController: UIViewController? // nil = WindowMode
 	var isViewOnly = false
}
LPAuthenticationParams

This class represents an object to determine the properties of an authenticated connection. If using an authenticated connection, this parameter must be passed: LPAuthenticationParams supports Code Flow login or Implicit Flow login. For Implicit Flow, pass 'jwt' parameter only. For Code Flow, pass 'authCode' and 'redirectURI' only.

class LPAuthenticationParams: NSObject {
    var authenticationCode: String? // Code Flow authentication
    var jwt: String? // Implicit Flow authentication
 	var redirectURI: String? // Code Flow authentication
}

New APIs

View-only API
func showConversation(_ conversationViewParams: LPConversationViewParams, authenticationParams: LPAuthenticationParams? = nil)

This method is used to open the conversation screen.

New reconnect API
func reconnect(_ conversationQuery: ConversationParamProtocol, authenticationParams: LPAuthenticationParams

When using SSO in an authenticated connection, an auth-code is passed to the SDK. The session in this case might have an expiration date. To reconnect with a new token, use the 'reconnect’ API and pass the new token.

This method reconnects the conversation's connection for a conversation query and reconnects open related webSockets and sync the conversation with its latest updates.

Deprecated APIs

  func showConversation(_ conversationQuery: ConversationParamProtocol, authenticationCode: String? = nil, containerViewController: UIViewController? = nil)

This method has been deprecated in SDK version 2.7. Use showConversation(_ conversationViewParams: LPConversationViewParams, authenticationParams: LPAuthenticationParams? = nil)

    func reconnect(_ conversationQuery: ConversationParamProtocol, authenticationCode: String)

This method was deprecated since SDK version 2.7.0. Use reconnect(_ conversationQuery: ConversationParamProtocol, authenticationParams: LPAuthenticationParams]

New callbacks

Photo sharing permissions callback
optional func LPMessagingSDKUserDeniedPermission(_ permissionType: LPPermissionTypes)
CSAT launched callback
   optional func LPMessagingSDKConversationCSATDidLoad(_ conversationID: String?)
CSAT skipped callback
   optional func LPMessagingSDKConversationCSATSkipped(_ conversationID: String?)

New strings

Structured content
"newStructuredContentMessage" = "New message";
"structuredContentAccessibilityMap" = "Map";
Connectivity status bar
"connectionStatusBarConnecting" = "Connecting...";
"connectionStatusBarStillConnecting" = "Still connecting...";
"connectionStatusBarFailedToConnect" = "Failed to connect to the server.";
Accessibility
"structuredContentAccessibilityMap" = "Map";