Working with this SDK or planning to in the future? Make sure to subscribe to receive notifications of changes. When we update the release notes, you'll get a notification straight to your email of choice.
Version 6.22.0
iOS Messaging SDK
Release Date: Sep 30, 2024
Environment requirements
The iOS Mobile Messaging SDK version 6.22.0 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
This version will be the last version where the Swift version 5.7.1 is used for compiling. Future versions will use Swift version 5.9.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- Fixed Cobrowse session staying open if consumer resolves the conversation during a call on an account with PCS setup.
- Fixed connection failure banner to be shown in some cases.
- Removed general Optional extension implementation of CustomStringConvertible.
- Fixed proactive messages not being rendered if not tapped by the user.
- Fixed the SDK keeping only the latest proactive message for rendering.
- Fixed navigation issues for accessibility users on the schedule slot list.
- Fixed voice-over focusing on file and caption separately for file messages.
- Fixed voice-over focus shift when new messages arrive.
- Fixed voice-over focus moving to the entire Structured Content container when the timestamp is automatically updated.
- Fixed voice-over focusing on random Structured Content elements automatically.
- Fixed issue when the user marks the conversation as urgent, Cobrowse invitation is sometimes duplicated.
- Fixed issue when conversation is resolved SDK not presenting next eligible proactive message.
- Fixed issue when appointment list is presented current day is not selectable.
Features
- Added a new API getPendingProactiveMessages to get pending proactive notifications
- Added a configuration fetchPendingProactiveMessagesImplicitly to fetch pending proactive messages messages implicitly.
-
Added ability to block consumers from triggering publish text actions on historical Structured Content messages. This feature can be enabled on the site level to have a default behavior and/or on the JSON level to have individual behavior. Please contact your account manager to define a default behavior.
- disabledStructuredContentButtonTextColor: Default value is LPColor.lpGray.
- disabledStructuredContentButtonBorderColor: Default value is LPColor.lpGray.
- Added ability to block consumers from sending messages when action is required Structured Content is the latest message. This feature can be enabled on the site level to have a default behavior and/or on the JSON level to have individual behavior. Please contact your account manager to define a default behavior.
- Added a configuration messageLinkAsCallback and callback LPMessagingSDKMessageLinkClicked. when tapping on a remote message link. * When both structuredContentLinkAsCallback and messageLinkAsCallback are enabled, only structuredContentLinkAsCallback is applied, and messageLinkAsCallback is ignored.
- Added support for "doc" and "xls" file types.
- A new method is added in SDK to check consumer’s open conversation status using UMS REST API. checkActiveConversationFromServer
Enhancement
- Disabled deprecated bitcode process to support most recent and upcoming XCode Versions.
Version 6.21.0
iOS Messaging SDK
Release Date: July 31, 2024
Environment requirements
The iOS Mobile Messaging SDK version 6.21.0 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- Fixed voice over announcing current assigned agent name instead of the actual agent who sent the message.
- Fixed voice over announcements for stop recording and stop replaying buttons.
- Fixed sometimes voice over announcing the "Agent is typing" twice for a single agent message.
- Fixed the accessibility issue with structured content carousel navigation where VO always moves focus on and announces the first element of the card 1 before focusing on the selected card.
- Voice over announcing unread message for every incoming message even though message is not unread one.
- Fixed accessibility issue related to structured content image without tooltip and actions was not getting ignored for accessibility services and announced as just "image".
- Fixed recorded audio message time being shown as "00:00" by backgrounding and foregrounding the app.
- Fixed when conversation screen just opened but user scrolls up and agent sends a message, it will auto scroll the conversation transcript to bottom.
- Fixed issue for conversation not getting scrolled to bottom when consumer sends multiline message.
- Fixed issue related to typing indicator not shown when the agent is sending some quick messages.
- Fixed issue related to PNG image rendering where SDK was rendering PNG image as black image.
- Fixed a rare app crash due to accessing core data nil objects.
- Fixed issue when user with only closed conversations logins but conversation screen loaded only one conversation instead of two.
Features
-
Provided the ability to identify the bot user messages and decorate the UI different from human agent messages. There are multiple branding configurations provided for this purpose.
- botUserBubbleBackgroundColor: Default value is LPColor.lpGray4.
- botUserBubbleBorderColor: Default value is LPColor.lpGray4.
- botUserBubbleLinkColor: Default value is LPColor.lpLink.
- botUserBubbleTextColor: Default value is LPColor.lpLabel.
- botUserBubbleBorderWidth: Default value is 1.
- botUserBubbleTimestampColor: Default value is LPColor.lpSecondaryLabel.
- botUserBubbleLongPressOverlayColor: Default value is LPColor.lpLabel.
- botUserBubbleLongPressOverlayAlpha: Default value is 0.3.
- botUserBubbleTopLeftCornerRadius: Default value is 8.0.
- botUserBubbleTopRightCornerRadius: Default value is 8.0.
- botUserBubbleBottomLeftCornerRadius: Default value is 0.
- botUserBubbleBottomRightCornerRadius: Default value is 8.
- botUserAvatarBackgroundColor: Default value is LPColor.lpGray4.
- botUserAvatarLeadingPadding: Default value is 8.
- botUserAvatarTrailingPadding: Default value is 8.
- botUserAvatarIconColor: Default value is LPColor.lpBackground.
- botUserDefaultAvatarImage: Default value is nil.
- botUserAvatarIconBorderWidth: Default value is 0.
- botUserAvatarIconBorderColor: Default value is LPColor.lpClear.
-
A new SDK callback is provided that will be invoked when welcome message option gets tapped. LPMessagingSDKWelcomeMessageOptionTapped
Enhancements
-
Some additional branding configurations are added for quick reply buttons. These configurations will be overriden by configurations provided in quick reply JSON.
- quickReplyTextColor: Default value is LPColor.lpGray.
- quickReplyBackgroundColor: Default value is LPColor.lpBackground.
- quickReplyBorderColor: Default value is LPColor.lpGray.
-
A new method is added "isRegisteredForPushNotifications” that takes a
token
asstring
to fully support the registerPushNotifications withString
method.
Version 6.20.0
iOS Messaging SDK
Release Date: May 30, 2024
Environment requirements
The iOS Mobile Messaging SDK version 6.20.0 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- The configuration remoteUserBubbleHyperLinkColor now properly reflects on hyperlinks sent by agents.
- Conversation now should probably scroll up in most scenarios while the keyboard is shown.
- Unread message divider now correctly appears when a consumer has the SDK in the background and returns to the SDK by tapping a push notification when there was only one message sent.
- Scroll issues when returning from a cobrowse session while the keyboard is open have been resolved.
- The remoteUserDefaultAvatarImage configuration now properly sets the agent icon background to transparent for cobrowse invitation messages.
- The keyboard is now dismissed when entering the cobrowse call.
- A crash that could occur when the speech recognizer functionality gets deallocated has been resolved.
- If the SDK was placed in a small container it could create spacing issues. This has been resolved.
- The text input bar would have unintended white space next to it if the device was placed in landscape mode and has been removed.
- Link display fixes for sending both a link and an embedded link in the same welcome message.
- An empty entry in the SDK privacy manifest has been removed.
Features
- A new function to send messages without needing to use the LP-provided input area has been added. sendText
- View Only Mode is now able to be enabled during an active conversation to disable the LP-provided input options.
- Added a configuration structuredContentLinkAsCallback and callback LPMessagingSDKStructuredContentLinkClicked. when tapping on Structured Content link.
Enhancements
- The cobrowse screen minimize button is now configurable with the voiceVideoNavigationMinimizeButtonImage configuration.
- Buttons that contain link actions now look like other buttons by default. They can still have their borders removed by the style object in the JSON or from the border configurations. They will still maintain the underlining if a link action is within the button.
Accessibility
- Voiceover will now read the tooltip of quick replies if it exists.
Version 6.19.0
iOS Messaging SDK
Release Date: Mar 29, 2024
Environment requirements
The iOS Mobile Messaging SDK version 6.19.0 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- Fix the conversation screen is not automatically scrolling to the bottom after a date from the date picker is selected.
- Fix Unstable UI on Date Picker / Appointment List when the device is rotated to landscape on bigger screen devices. The date picker is no longer using the deprecated portrait forcing mechanism for small-screen devices.
- Fix SDK is showing an empty navigation bar animating out of the screen after the date selection is confirmed.
- Fix disabling enableLinkPreview disables enableRealTimeLinkPreview
- Fix the appointment list does not highlight the focused date correctly in some cases
- Fix Buttons fill available space when rendering the structured content.
- Fix SDK ignores URLs when the message contains a hyperlink
- Fix SDK shows an Unread message notification If successive long messages are received while the screen is still scrolling.
- Fix the behavior of Voice Over to let users focus on individual cards instead of only the whole carousel.
- Fix the background color is not transparent for the image of the agent avatar while the agent is typing.
- Fix the margin for the text label inside Structured Content, It is no longer rendered closer to the bottom of the container.
- Fix Cobrowse invitation having a default white background even on dark conversation background color.
Features
- SDK can now render the Welcome Message that has been set on Window Configuration on Mobile Engagement. Reach out to your account representative to enable and adjust.
- SDK now allows users to switch to picture-in-picture mode. This allows users to minimize the call view while the call is still active and see/interact with the chat view.
Picture in Picture is supported on iOS 14.3+. Previous versions will default to full screen call view.
- SDK now allows host applications to enable navigation buttons on horizontal Carousels. These buttons allow consumers to select the next/previous card when tapped. Focus will switch to the first card when the “next button” is tapped while the focus is on the last card. Focus will switch to the last card when the “previous button” is tapped while the focus is on the first card.
-
carouselNavigationButtonsAppearance: Default value is alwaysHide
alwaysHide: Do not show navigation buttons
showOnVoiceOver: Show navigation buttons when Voice over is activated
alwaysShow: Show the navigation buttons
- carouselNavigationButtonBackgroundColor: Default value is LPColor.lpClear
- carouselNavigationButtonSize: Default value is 30.
- carouselNavigationButtonCornerRadius: Default value is 10.
- carouselNavigationButtonsMargin Default value is 23.
- carouselNavigationButtonIconColor Default value is LPColor.lpBlue.
- carouselNavigationMoveToPreviousIcon Default value is UIImage(systemName: "chevron.left.circle.fill").
- carouselNavigationMoveToNextIcon Default value is UIImage(systemName: "chevron.right.circle.fill").
-
carouselNavigationButtonsAppearance: Default value is alwaysHide
Enhancements
- New Configurations added to Structured Content
- structuredContentButtonBackgroundColor: Configures the background color of buttons that are used in Structured Content.
- structuredContentCardBackgroundColor: Configures the background color of cards that are used in Structured Content.
- New Configuration to inject welcome message for offline messaging added
Version 6.18.1
iOS Messaging SDK
Release Date: Mar 22, 2024
Environment requirements
The iOS Mobile Messaging SDK version 6.18.1 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- Fix for privacy manifest containing unneeded reason codes for File Timestamp Section
Version 6.18.0
iOS Messaging SDK
Release Date: Jan 31, 2024
Environment requirements
The iOS Mobile Messaging SDK version 6.18.0 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- Fix callbacks Index "LPMessagingSDKConnectionStateChanged" to only return "true" once when the view is ready (after the queries to UMS and history API are completed).
- Fix when the container view controller has a translucent navigation bar, the toast banner within the SDK on the conversation screen was not displaying properly.
- Fix and apply all the following paddings for all consumer/remote messages:
remoteUserAvatarLeadingPadding, remoteUserAvatarTrailingPadding, bubbleTimestampTopPadding, bubbleTimestampBottomPadding, bubbleTopPadding, bubbleBottomPadding, bubbleLeadingPadding, bubbleTrailingPadding
Features
-
"Offline Messaging": When enabled, lets consumers to interact with messaging screen immediately instead of having them waiting for loading process to be completed and prevents showing a blocking loading view.
- Attribute "offlineMessagingEnabled": true/ false
- Attribute "pcsBehaviorForOfflineMessages": 0 as default value. Possible values and functions:
1 - remove offline messages from dialog and do not send them to UMS, continue with PCS dialog
2 - resolve active PCS dialog and send offline messages to a new conversation
0 / other values - do nothing, just send offline messages to the same dialog
- Other "UI attributes": offlineLoaderColor, offlineLoaderBackgroundColor, offlineLoaderCornerRadius, offlineLoaderWidthPercentage, offlineLoaderHeight, offlineLoaderAnimationSpeed.
- Add a "speech recognition" feature to trigger the device's speech-to-text capability. Once enabled, a custom speech recognition button will appear in the input-text view area. Please ensure to include the required permissions to your application.
- Attribute "enableSpeechRecognition": true/ false to enable this feature.
- Attribute "speechRecognitionInputDurationInSeconds": default 10.0 (seconds). Max duration of input inactivity for speech recognition to be automatically disabled.
- New localized strings key:
A11Y related: "accessibilityVoiceRecognitionButton", "accessibilityVoiceRecognitionButtonActivationHint", "accessibilityVoiceRecognitionButtonDeactivationHint", "accessibilityVoiceRecognitionButtonErrorHint", "accessibilityVoiceRecognitionInsertedText"
UI related: "voiceRecognitionPlaceHolder"
Enhancements
- Allow style changes on Welcome Message options for quick replies. Please check our guide for more information.
Enhancements / Features
- Add privacy manifest files to describe the data LP iOS Messaging SDK collects and the reasons required APIs it uses.
Version 6.17.0
iOS Messaging SDK
Release Date: Dec 20, 2023
Environment requirements
The iOS Mobile Messaging SDK version 6.17.0 is supported on iOS versions 13 through 17.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Bugs fixed
- Fix a bug where Secure Forms submissions are not sent into a new socket if the token expires while the form is open.
Features (internal)
- Added internal logging metrics (OpenTelemetry) to collect SDK performance data. This feature is turned off by default, and we only enable sampling data collection for specific brands in response to performance enhancement request.
Version 6.16.0
iOS Messaging SDK
Release Date: October 26th, 2023
Environment requirements
The iOS Mobile Messaging SDK version 6.16.0 is supported on iOS versions 13 through 17.
In the previous version, it was noted that the SDK would be updated to the minimum iOS target of iOS 13. The minimum target for this version is now 13 and it will no longer compile with less than 13. There is no support even at a compilation level for iOS 12 from this version on.
This XCFramework was compiled with Swift version Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51), which means it will work Swift version 5.7.1 and above.
Apple silicon is supported on this version
XCFramework is supported on CocoaPad versions 1.13.0 and greater.
Accessibility Bugs fixed / Enhancement
- The focus of the screen reader when structured content is being read is now moved to the item that it is reading instead of staying on the whole cell when a new message comes in.
- When using accessibility options structured content borders could be incorrect and have been fixed.
Bugs fixed
- Several changes to both appointment list and date picker content which will resolve issues of improperly set dark mode colors as well as setting colors when flipping between dark and light mode without relaunching the content.
- Resolved an issue where in some scenarios call accept and rejoin buttons for cobrowse would be square instead of circles.
- Resolved an issue where the agent typing indicator would not show after the user opened a link and then returned.
- Resolved an issue where the unread message count could be incorrect after PCS questions were answered by the user and the user would log out and back in.
- Resolved an issue where the message status (sent, delivered, read, etc.) was not updating correctly if the conversation had files sent from web messaging and then opened in the SDK.
- Resolved an issue where the survey bot would still show in the header after the survey was closed.
- Resolved an issue where older message timestamps would not always be updated and could go stale if the cells were not reloaded yet.
- Resolved an issue where the unread message count in the scroll to bottom button could be cut off if the message was only one character.
- Resolved an issue where there could be a crash while scrolling through an appointment list days list.
- Resolved an issue where the agent name would not show in conversation history after logging out and logging in at the end of the conversation where it shows the close reason.
- Resolved an issue where a link could not be tapped while the keyboard was open.
- Resolved issues where unread message count would be cleared if pull down to fetch history was completed or the file attachment menu was opened.
- Removed a duplicated navigation bar in the file preview screen.
Features
- Added new PKCE Oauth Support which contains a new method getPKCEParams()and a new field in the LPAuthenticationParams object the codeVerifier. Further details will be contained in the LPAuthenticationParams and function documentation. LPAuthenticationParams getPKCEParams
Enhancements
- Updated table view headers to align with footers to prevent discrepancies.
- Compilation support for iOS 12 has been fully dropped to allow the use of newer Apple API within the development of the iOS SDK.
- In-app push notifications now dismiss on tap and not just on swipe up to dismiss.
- The SDK now has added functionality to be used through SPM as well as the previously existing manual and Cocoapod options. There are further details on the quick start page. QuickStart
- Due to the change of the minimum iOS version target to 13 several availability flags have been removed internally as they are no longer necessary.
- Added a digital signature to the iOS SDK to be identifiable by brands build processes.
Version 6.15.0
iOS Messaging SDK
Release Date: August 17, 2023
Environment requirements
The iOS Mobile Messaging SDK version 6.15.0.895 is supported on iOS versions 13 through 16.
This version will be the last version where the iOS target is set to iOS 12. This version can be compiled with iOS 12 while not being supported. Future versions will have iOS targets set to 13 and will no longer allow compilation with iOS 12.
This XCFramework was compiled with Swift version Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1), which means it will work Swift version 5.5 and above.
M1 processor is supported for use with this version.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Accessibility Bugs fixed / Enhancement
- If a user is typing in the text input area with voice-over on the voiceover focus would shift to onto a new message instead of staying on the text input area when a Structured Content item was sent by an agent.
- All headings now contain heading markups.
Bugs fixed
- Scroll to bottom button doesn't appear after opening a file and returning to the SDK.
- Files are duplicated when the app is force closed and the upload hasn't been completed.
- App crash when a conversation is resolved while a file is mid-upload.
- Metadata is incorrect when sending a Date Picker selection (single or range).
- Date format in the date picker ignores the LPConfig language set.
- Structured Content cards may change size when going from background to foreground or when opening a link and then returning to the SDK.
- Image size changes when rotating the device back and forth.
- Missing agent name on resolve message if the conversation was resolved by an agent.
- Date picker footer will always be in English
- Sending agent messages with markdown links break the message bubble in some situations
- Files duplicate when a user selects a Quick Reply option while the file is still uploading.
- In some situations, while archiving and there is no set background color for a structured content item it would have a grey background.
- App crashes when repeatedly sent to background and foreground while the conversation history params are set to CLOSED and the conversation is closed.
- Unread message divider appears twice or shows the wrong count.
- Internal getEngagement refresh for monitoring API when using the JWE solution will no longer refresh with an existing token which can potentially be expired.
- On newer messaging backends consumer messages could duplicate more frequently based on incoming events.
- Appointment list slot times localization doesn't reflect language correctly.
- Scroll to bottom button is shown and tappable when conversation history is empty.
- Appointment List localization is not correct on a fresh launch of a fresh install.
Features
- History fetching logic has been updated to support a new data masking feature which allows you to select how long until the masking will take effect on sensitive data on an account level. This functionality is not set in the SDK and is set in the account backend. Reach out to your account representative to enable and adjust.
- Welcome message is now further able to be customized at points it previously was unable to be. It can now be updated more frequently allowing for specific consumer targeting. Further details will be in the welcome message sections of the documentation. - setWelcomeMessage
Enhancements
- Several removals of outdated and no longer used code.
Version 6.14.0
iOS Messaging SDK
Release Date: June 28, 2023
Environment requirements
The iOS Mobile Messaging SDK version 6.14.0.888 is supported on iOS versions 13 through 16.
This XCFramework was compiled with Swift version Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1), which means it will work Swift version 5.5 and above.
M1 processor is supported for use with this version.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Accessibility Bugs fixed / Enhancement
- Add VoiceOver support for ‘link’ hint when the consumer receives a message with a link from an agent while the consumer screen position is not at the bottom.
- Avoid scroll-to-bottom button automatically highlighting by VoiceOver in various situations and only will be highlighted by touching manually.
- Make sure VoiceOver focus on the appropriate message position after tapping the scroll-to-bottom button.
- Make link within consumer or agent messages tappable by voice over when link-preview is turned off.
Accessibility Features
- Queue new message announcement. Announce the new messages sequentially or not based on the feature flag
announceEventsSequentially
.
Bugs fixed
- Render Structured Content fully in different situations
- Some app-crash reported in iOS SDK v6.9, fixed potential app-crash related to “LPMessagingSDK.Dialog.logDescription.getter”.
- Display correct unread message bubble divider in the conversation screen after log-out and re-login for ongoing conversation.
- Fixed SDK branding and configuration spelling error:
appointmetnCustomOutputDateFormat
->appointmentCustomOutputDateFormat
,appointmentConfirmationViewBackroundColor
->appointmentConfirmationViewBackgroundColor
. - Prevent the SDK from creating a new conversation with a blank first message due to subscription on the wrong dialog ID.
- Avoid calling LPMessagingSDKConversationEnded delegate method multiple times for the same conversation.
- Prevent two consecutive pusher unregister API requests from SDK.
Features
- Support to show Initial message as part of Conversation on Conversational Cloud has been added. This improves Agents' context and remove the extra explanation for consumer. This also allows AI automation like intents and dynamic routing, to quickly determine the next best action that the conversation should take. 'Messaging.Send_Consumer_Message_Metadata' should be enabled on Acount Configurations.
- Support for supplying JWT/JWE tokens to getEngagement (with additional authParams) method. Refers to Advanced Features\Campaigns page for sample code snippet. !Important: This method only works with the Implicit and Code Flow authentication method.
Enhancements
- Parsing HTML tags using the HTML data has been replaced by custom tag parser, to prevent rendering the Controller bot Welcome Message multiple times.
- SDK added additional encrypt/decrypt process with Secure Enclave-stored key whenever SDK read/write data from the keychain.
New configurations
announceEventsSequentially
Enable or disable queue new message announcement. This controls whether VoiceOver announces new messages sequentially or not.
- Type: Bool
- Default Value: true
Version 6.13.0
iOS Messaging SDK
Release Date: April 30, 2023
Environment requirements
The iOS Mobile Messaging SDK version 6.13.0.873 is supported on iOS versions 13 through 16.
This XCFramework was compiled with Swift version Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1), which means it will work Swift version 5.5 and above.
M1 processor is supported for use with this version.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- Voice over does not announce Structured Content with only one Basic Element. It now announces "This message has extra content" and content is announced on focus.
- Voice over announces same text twice when Structured Content with only one non layout item in the container. Voice over now announces "This message has extra content" and content is announced on focus.
- Welcome Message does not display every time despite frequency is set to .everyConversation
- Multiple consumer IDPs feature does not support JWKS flow.
- Conversation ID is stuck or wrong on GetEngagement if Consumer resolves the conversation and starts another conversation without leaving the conversation screen.
- Keychain Item Might have wrong accessibility attribute If it was previously saved.
- Crash might occur while scrolling using the scroll to bottom button.
- Conversation Screen shows history on relaunch after history is cleared on non-window mode.
- Date Picker allows user the confirm range selection without selecting dates.
Enhancements
- Date Picker, month/year selection is now opens with already selected month and stays in sync with focused month.
- Date Picker now automatically scrolls the current or closest date in the selection range.
Version 6.12.0
iOS Messaging SDK
Release Date: March 07, 2023
Environment requirements
The iOS Mobile Messaging SDK version 6.12.0.870 is supported on iOS versions 13 through 16.
This XCFramework was compiled with Swift version Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1), which means it will work Swift version 5.5 and above.
M1 processor is supported for use with this version.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- Removed hang risk warning on socket library by refactoring the threading.
- Some situations where in-app push notifications could not appear if the root controller was reset were fixed. In-app notifications should always appear now.
- After clearing history, the history should no longer be able to be pulled. The history could still be fetched for up to 10 minutes due to some rounding in the history API. This has been prevented.
- Long pressing links should no longer result in crashes intermittently.
- Sending markdown in an unsupported manner should no longer result in a crash when fetched from history.
- Submitted Secure Forms will no longer have a lingering border-line from the removed field.
- Certain scenarios could cause the unread message divider to reappear and iterate even after reading all messages. This has been resolved.
- A crash could occur if a consumer left something typed into the input field without sending it and then closed the view within unauth messaging. This has been prevented.
- Fixed setUserProfile method being called unnecessarily if registerPushNotifications was invoked with an alternateBundleId.
Features
- Support for Multiple IDP has been added to the SDK. The host app must supply an issuer display name into the authentication params if the default IDP is not used. Further details LPAuthenticationParams
Enhancements
- Previously, the SDK would make more requests than needed to the push notification server to reset the unread count. This has been refactored to reduce the number of requests and only to be called when needed.
- Updates have removed warnings that may fire in the Xcode console about "NSKeyedUnarchiveFromData."
- Many classes have been updated to conform up to date Apple standards. This should show fewer warnings appearing in the SDK or console logs.
- Improvements have been made to filesharing to allow new configurations of the photo compression as well as photo height and width. More details will be contained in the configuration sections.
- A new language identifier has been added to allow Mexican Spanish to be localization. The identifier is es-MX.
New configurations
maxPhotoCompression
- Description: CGFloat which adjusts the jpg compression used on an image. Lower is more compression higher is less compression. The value must be between 0 to 1.
- Type: CGFloat
- Default value: 0.50
- Available since: 6.12.0
maxPhotoWidthSize
- Description: CGFloat adjusts the max width in pixels for a sent image. Must be between 0 to 1600.
- Type: CGFloat
- Default value: 800
- Available since: 6.12.0
maxPhotoHeightSize
- Description: CGFloat adjusts the max height in pixels for a sent image. Must be between 0 to 1600.
- Type: CGFloat
- Default value: 800
- Available since: 6.12.0
Version 6.11.0
iOS Messaging SDK
Release Date: December 16, 2022
Environment requirements
The iOS Mobile Messaging SDK version 6.11.0.860 is supported on iOS versions 13 through 16.
This XCFramework was compiled with Swift version Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1), which means it will work Swift version 5.5 and above.
With this release we are also providing support for the M1 chip.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- On iOS 15 and above the configurations
secureFormNavigationBackgroundColor
,secureFormNavigationTitleColor
,csatNavigationBackgroundColor
,csatNavigationTitleColor
were not working. - The welcome message was not shown even if the welcome message frequency was set to
.everyConversation
in a scenario when the user resolves the conversation and leaves the conversation screen quickly. - Unauthorized conversations were not able to continue after app relaunch. The SDK was showing a connection error.
- Unauthorized conversations were not able to reconnect on foregrounding the app when JWT expired in the background.
- Unable to send or receive messages after opening the file in another program and returning to the app by tapping on the app name in the top left corner.
- When opening the conversation screen and rotating the device to landscape mode, there was an empty space on either side of the input text view on iPhone X and above.
- The SDK was storing the push token being passed in method
isRegisteredForPushNotifications
that was further used to register for push notifications on callingshowConversation
method. - The app was crashing sometimes on login completion due to a thread safety issue.
- The clickable area for the in-app toast banner was reduced if a top offset was provided.
- The keyboard was blocking the user input field when the conversation screen shown within UITabBarController with translucent tabbar.
- There were some incorrect values present in some localization string files causing app crashes.
- Incoming structured content was shown as
within the in-app toast banner when the conversation screen was closed and the socket was still open for some time. - The brand app's navbar color was changed to the SDK conversation screen's navbar color after the conversation screen was dismissed.
Enhancements
- Provide a method in SDK to get registered for push notification with raw string token instead of device token data. This string token will be used as it is (without hex decoding) to register for the pusher and for the pusher to communicate with the client's proxy server instead of APNS.
- Integrate the new pusher API to clear all unread messages count/badges for a given consumer irrespective of the conversation that is being displayed currently based on a branding configuration.
- Provide a feature flag to enable/disable StepUp authentication.
New configurations
pusherClearBadgeCount
- Description: Bool is used to clear the unread badge count for all the unread messages of all the conversations at once on Pusher whenever the user comes to the conversation screen.
- Type: Bool
- Default value: false
- Available since: 6.11.0
shouldPerformStepUp
- Description: If set to "true", then the UnAuth conversation can be stepped up.
- Type: Bool
- Default value: false
- Available since: 6.11.0s
Version 6.10.0
iOS Messaging SDK
Release date: October 07, 2022
Environment requirements
The iOS Mobile Messaging SDK version 6.10.0.849 is supported on iOS versions 13 through 16.
This XCFramework was compiled with Swift version Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1), which means it will work Swift version 5.5 and above.
With this release we are also providing support for the M1 chip.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- Cleared history is not coming back until user does re-login.
- Phone numbers with spaces sent in messages are dial-able.
- Fixed auto-layout constraints for in-app toast view to suppress warning being printed on XCode console.
- Secure form message cell is fully accessible.
- Convey the meaning of images through tooltip and the behavior if those are tap-able links within structured content.
- Make a voice over announcement when a conversation ends by either consumer or agent.
- Structured content elements font size will increase/decrease depending on font category.
- Avoid welcome message being shown momentarily while loading conversation history.
- Structured content text element is not cutting off content from trailing boundary.
- Removing old proactive message from conversation when a new proactive message is opened.
- LPMessagingSDKAgentDetails callback is being called when agent has changed to survey bot.
- Set same height for structured content carousel buttons.
- Stop clearing unauth user conversation history if another view covers conversation screen.
- conversationBackgroundColor config being applied properly to the quick reply message cell.
Enhancements
- Based on a feature flag (by default false) images being sent to agents can be obfuscated for security reasons.
- Improve the translations for strings and provide support for Filipino language.
- Expose a config for setting minimum height of the structured content buttons.
- Expose a config for setting structure content button border's corner radius.
- Expose a config for setting structured content button of link type foreground color.
New configurations
structuredButtonMinimumHeight
- Description: Set the minimum height constraint for Structured Constant button elements
- Type: CGFloat?
- Default value: nil
- Available since: 6.10.0
structuredContentButtonBorderCornerRadius
- Description: Set the corner radius of Structured Constant button elements border
- Type: CGFloat
- Default value: 15.0
- Available since: 6.10.0
structuredContentLinkButtonTextColor
- Description: Set the text color for Structure Content elements of link button type
- Type: UIColor
- Default value: LPColor.lpLightBlue
- Available since: 6.10.0
Version 6.9.0
iOS Messaging SDK
Release date: August 12, 2022
Environment requirements
The iOS Mobile Messaging SDK version 6.9.0.843 is supported on iOS versions 13 through 15.
This XCFramework was compiled with Swift version Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57), which means it will work Swift version 5.4.2 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- Certain history control settings no longer result in a blank screen.
- Keychain accessibility is updated to meet apple standards.
- The divider is removed when agents send new messages, and the consumer is at the bottom of the conversation screen.
- Fixed an issue where already selected quick replies still had a type of button.
- Fixed an issue where new photos would replace previously sent photos in the conversation screen.
- Fixed an issue that caused the structured content button border not to appear.
- Fixed an issue where specific backgrounding scenarios would prevent the unread message divider from appearing.
- Fixed an issue where quick replies would render more than once beneath each other.
- Fixed an issue where the unread message divider wouldn't appear for messages sent with quick replies.
- Secure forms show the form title now instead of the default title.
- Scroll to bottom button is no longer focusable by a screenreader when it is disabled in the configurations.
- Scroll to bottom button has the correct type of button.
Enhancements
- New Arabic string translations have been added, so all strings are now in Arabic.
- Added support for Bluetooth keyboards and key commands for accessibility users.
- The loading screen is now announced for screen reader users.
- Support for future messaging backends increased.
New configurations
inputTextViewPlaceholderColor
- Description: Edit the color of the input text placeholder.
- Type: UIColor
- Default Value: nil
- Available since: 6.9.0
Version 6.8.0
iOS Messaging SDK
Release date: May 13, 2022
Environment requirements
The iOS Mobile Messaging SDK version 6.8.0.830 is supported on iOS versions 13 through 15.
This XCFramework was compiled with Swift version Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
New functionality
Step up authentication
SDK will authenticate an unauthenticated user in the middle of the conversation. Data will persist across the whole flow when changing from Unauthenticated to Authenticated conversion. For more information, follow feature documentation.
Support for non-rich content proactive InApp push notifications
Brands will be able to show custom Welcome Messages with non-rich content.
Bugs fixed
- Date picker — Single selection does not highlight the selected day,
- Structured Content:
- not consistently scrolling to the bottom,
- spacing unequal unless you scroll up and back down,
- Unread Message Divider not showing in certain scenarios and not available for assistive technology users,
- Updated LPMessagingSDKModels to same iOS target as LPMessagingSDK,
- Scroll to bottom button is not available for assistive technology users,
- Enabling non-text Read Receipts to support assistive technology,
- Fixed issue with wrong error messages presented if Audio message from Consumer fails
Version 6.7.0
iOS Messaging SDK
Release date: Jan 31, 2022
Environment requirements
The iOS Mobile Messaging SDK version 6.7.0.820 is supported on iOS versions 13 through 15.
This XCFramework was compiled with Swift version Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- Fixed the issue with unread message divider not clearing after consumer responds.
- Fixed the issue with Send Button failed to appear when selecting an image via Photo Sharing feature.
- Fixed the issue with cases when a duplicate header will be display when starting a Conversation.
- Fixed cases when Conversation Screen will have issues scrolling to the right position.
Enhancements
Clear history enhancement
SDK will have the capability of clearing the welcome message as well including the history when clicking on clear history. This config will not be in charge of clearing the welcome message when closing the conversation and reopening it.
Control History API
When using the Control History API, conversations are filtered in real time based on the parameters provided, once each conversation dialog is closed the Conversation Screen will reflect the changes accordingly.
To enable displaying the Welcome Message when using this feature, enable the following configuration enableWelcomeMessageForControlHistoryAPI
, this is only supported when setting LPConversationsHistoryStateToDisplay.Open
. To see more about how to achieve this visit link
New configurations
enableHideWelcomeMessageOnClearHistory
- Description: Show or hide the welcome message when calling the Clear History functionality.
- Type: Bool
- Default Value: false
- Available since: 6.7.0
- See also: Clear History Function
- Limitations: The history is still available both on the Server and Local Database, and will be loaded next time the Conversation Screen is presented.
enableWelcomeMessageForControlHistoryAPI
-
Description: This configuration will only enable showing the Welcome Message when
LPConversationsHistoryStateToDisplay.Open
- Type: Bool
- Default Value: false
- Available since: 6.7.0
- See also: Control History API
Deprecations
maxPreviousConversationsToPresent
- Description: Set the max conversations to present on initial load.
- Type: Int
- Default Value: 2
- Available until: 6.6.0
- Note: This property is now part of the Control History API via the historyConversationsMaxDays parameter.
Version 6.6.0
iOS Messaging SDK
Release date: Oct 29, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.6.0.809 is supported on iOS versions 13 through 14.
This XCFramework was compiled with Swift version Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
New functionality
Appointment List
Enabling Brands to leverage new JSON schema containing appointmentList Action, presenting new UI components on the Conversation Screen allowing to self-serve appointment selections.
Appointment List JSON schema is only supported on accounts using UMS version 4.2, please contact your LivePerson representative (other contact options: chat with us on this page, or message Support) to validate your account qualifies for this feature.
Bugs fixed
- Fixed the issue with hyperlink not working on remote message.
- Fixed the issue with screen freezing after resolving conversation.
- Fixed the issue with Unread Message texts not being read by voice over.
- Fixed the issue with the "Loading" message not being read by voice over.
- Fixed the issue with the photo caption name having incorrect role of button.
Enhancements
- When the conversation comes from background to foreground, instead of requesting new authentication from IDP, SDK will check if it has a LP_JWT, then will try to connect and let the backend service do the expiration check.
If the token is not available, will trigger LPMessagingSDKTokenExpired
or LPMessagingSDKAuthenticationFailed
delegate accordingly.
New configurations
controllerBubbleHyperlinkColor
- Description: Controls text color for hyperlink item on the system messages bubble
- Type: UIColor
- Default Value: LPColor.lpGray2
- Available since: 6.6.0
appointmentCustomOutputDateFormat
- Description: Default format to present date in output message
- Type: String
- Default Value: "EEEE, MMMM d"
- Available since: 6.6.0
appointmentCellSelectedColor
- Description: Default color for when user presses and selects a cell from the calendar view
- Type: UIColor
- Default Value: UIColor.appointmentListCalendarBlueColor
- Available since: 6.6.0
appointmentSlotImage
- Description: Default image for appointment slot image
- Type: UIImage
- Default Value: image named LP_APPOINTMENT_IMAGE
- Available since: 6.6.0
For the complete list of configurations related to the AppointmentList, click here
Version 6.5.1
iOS Messaging SDK
Release date: September 9th, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.5.1 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Enhancements
Support for Rich Proactive InApp Push Notifications
A brand will be able to attach an image URL to a proactive push notification and that image will be rendered as appropriate for the device.
Reporting for Rich Proactive InApp Push Notifications
- when proactive payload is delivered to SDK
- when proactive payload is processed and displayed on SDK conversation window
- when consumer clicks on the image
- when consumer initiates the conversation with SC proactive payload
- when the image URL fails to render.
Bugs fixed
- iOS SDK sending empty JSON array to Loggos creating 500 errors
- remote user's bubble text color is not conforming to remote text color when in Dark Mode.
- Link's underline is short when adding emojis.
Version 6.5.0
iOS Messaging SDK
Release date: Jul 16, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.5.0.802 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
New functionality
Support for Structured Content containing DatePicker schema
Enabling Brands to leverage new JSON schema containing Single or Range DatePicker, presenting new UI components on the Conversation Screen allowing to self-serve Date selections.
DatePicker JSON schema is only supported on accounts using UMS version 4.2, please contact your LivePerson representative (other contact options: chat with us on this page, or message Support) to validate your account qualifies for this feature.
Improved performance for First Time Load
Improved loading times for First Load or for Consumers connecting after a Logout.
Adding support for additional languages
Adding language parity with other conversational Cloud Services:
- Malaysian
- Arabic
- French-Canadian
- Indonesian
- Latin American Spanish
Adding new configuration to control presentation style for Image/File/Video Picker ViewController
Adding new configuration to enable Brands to control UIModalPresentationStyle when presenting the following Pickers:
- File Sharing
- Image Sharing
Bugs fixed
- Fixed the issue when Unread Message Divider won’t be dismissed
- Fixed the issue when loading view won't dismiss when closing and reopening Conversation Screen during PCS
- Fixed the issue when Conversation Source will be reported as SHARK
New configurations
enableLoadingView
- Description: Will enable/disable presentation of loading view when presenting Conversation Screen.
- Type: Bool
- Default Value: true
- Available since: 6.5.0
modalPresentationStyle
- Description: The configuration to control our modal presentation styles within the SDK.
- Type: UIModalPresentationStyle
- Default Value: fullScreen
- Available since: 6.5.0
imagePickerPresentationStyle
- Description: The configuration to control our modal presentation style for image picker controller within the SDK.
- Type: UIModalPresentationStyle
- Default Value: fullScreen
- Available since: 6.5.0
datePickerPresentationStyle
- Description: The configuration to control our modal presentation stylen for LPDatePicker controller within the SDK.
- Type: UIModalPresentationStyle
- Default Value: fullScreen
- Available since: 6.5.0
For the complete list of configurations related to the DatePicker, click here
Version 6.4.1
iOS Messaging SDK
Release date: June 9, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.4.1.791 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Enhancements
Enhancing processing of Proactive and IVR Deflection to cover In App Notifications.
Enabling processing of Proactive and IVR Deflection Notifications can be done using a new configuration, for cases when Host App is in an active state and consumer taps on the InApp Notification:
enableInAppProcessingForActiveState = true
Exposing a new method to handle tapping of InApp Notifications:
public func handleTapForInAppNotification(notification: LPNotification)
When brands have their own implementation of the LPMessagingSDK InApp notification via
LPMessagingSDKNotification(customLocalPushNotificationView notification: LPNotification)
protocol, a new method has been exposed to notify SDK that notification was tapped and it can process the Proactive and IVR Deflection Data accordingly.
Bugs fixed
- Fixed the issue when Socket won’t disconnect when interrupting the connection process.
- Fixed the issue when loading view won't dismiss when closing and reopening Conversation Screen during PCS
New configurations
enableInAppProcessingForActiveState
Enable or disable the ability to display Proactive and IVR Deflection messages on Conversation Screen
- Type: Bool
- Default Value: false
-
Preconditions:
- Consumer to be registered for Push Notifications
- Consumer tapped InApp Notification
- Available since: 6.4.1
This flags enables SDK to process InApp Notifications for Proactive and IVR Deflection messages, is not related to Push Notifications received when the Application is not active.
Version 6.4.0
iOS Messaging SDK
Release date: May 7, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.4.0.787 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Enhancements
Adding a self awareness process to help SDK recover after discovering a corrupted keychain preventing empty bubbles from being shown on the Conversation Screen.
Adding reporting capabilities for Proactive and IVR Deflection to App Messaging feature.
Bugs fixed
- Fixed the issue when changing value for maxPreviousConversationToPresent fails to reflect new value
- Fixed the issue with Video and Voice call invite UI shows square buttons instead of round ones.
- Fixed the issue with VoiceOver focus interaction will read out:
- error messages from Structured Content.
- Structured Content buttons as links.
- Fixed the issue with background task on LPSocket not ending properly will cause the OS to kill the Host App.
- Fixed the issue with inconsistent scrolling when showing the Conversation Screen.
- Fixed the issue with unread message count banners not shown while in the Conversation Screen.
- Fixed the issue with LPMessagingSDKAgentDetails was being called only once per Conversation.
- Fixed the issue where SDK will increase memory footprint when repeatedly opening and closing the Conversation Screen.
- Fixed the issue when failing to access resources from device storage will cause images not to load.
New configurations
inAppReportingEnabled
Enable or disable sending reporting events for Proactive and IVR Deflection to App Messaging.
- Type: Bool
- Default Value: true
structuredContentLoadingImage
Structured content loading image when images are being fetched/loaded.
- Type: UIImage?
- Default Value: image named LP_LINK_PREVIEW_LOADER_ICON
structuredContentBrokenImage
Structured content loading image when images failed to fetched/loaded.
- Type: UIImage?
- Default Value: image named LP_BROKEN_IMAGE
Version 6.3.0
iOS Messaging SDK
Release date: March 15, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.2.0 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
New features
- Voice & Video support:
Voice and Video integration allows brand agents to communicate with consumers via voice or video calls.
KB article: Voice & Video Overview
To enable this feature on the Conversational Cloud, please contact your LivePerson representative (other contact options: chat with us on this page, or message Support).
For all available Voice & Video branding and configurations, visit the feature page
Enhancements
structuredButtonWidthConstant
Adding Structured Content outer padding configuration: Defines a padding constraint for Structured Constant elements of the button type.
- Type: CGFloat
- Default value: -20.0
conversationSeparatorContentViewTopPadding
Adding Conversation Separator configurations: Defines the top padding for the conversation separator content view.
- Type: CGFloat
- Default value: 0.0
conversationSeparatorContentViewBottomPadding
Defines the bottom padding for the conversation separator content view.
- Type: CGFloat
- Default value: 0.0
linkPreviewLoadingImage
Adding Link Preview configuration: Defines image for link preview loader.
- Type: UIImage
- Default value: nil
Bugs fixed
- Fixed the issue when Conversation Separator padding interfered when setting conversationBackgroundColor
- Fixed the issue when Quick Replies will be dismissed when opening menu when in Window Mode
- Fixed the issue when inputTextViewTopBorderColor is not properly aligned when there Empty State View is presented (“There are currently no conversations at this time”)
- Fixed the issue when VoiceOver won’t read correct label when reading Structured Content cards
- Fixed the issue when unread bubble background will not change color when setting conversationBackgroundColor
- Fixed the issue when Structured Content timestamp will not resize when setting Large Text on Accessibility Settings
- Fixed the issue when Conversation Screen will not take focus and Voice Over will read ViewController behind it
Crashes fixed
- Fixed crash on LPSDKManager.getBundle() due LPLogger
- Fixed an issue when SDK will crash when checking Message Types
Version 6.2.0
iOS Messaging SDK
Release date: January 29, 2021
Environment requirements
The iOS Mobile Messaging SDK version 6.2.0 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
New features
-
In App proactive support
-
Send Push notification in logout state New Logout API
func logout(unregisterType: LPPusherUnregisterType,
completion: @escaping ()->(),
failure: @escaping (_ error: Error)->())
- Support rendering links automatically for welcome message.
this change only adds support to url, sms, tel, facetime, facetime-audio, and doesn't cover hyperlinks format.
Enhancements
- Error code enhancements
- New configurations for Conversation separator line
- enableConversationSeparatorLine: Toggle conversation separator line when conversation resolved from agent or consumer.
- enableConversationSeparatorLineOnAutoClose: Toggle conversation separator line when conversation is auto close
Bugs fixed
- LPConfig property inputTextViewContainerBackgroundColor not respecting color
- LPConfig property conversationBackgroundPortraitImage not changing image
- Fixed a gap of space surrounding the conversation separator
- Loading screen is not showing after resuming conversation after logout
- Unread message divider is not showing for one unread message
- File/Phone preview not updated when network unreachable
- Brand Avatar not display while using Window Mode
- Scroll to bottom issue when conversation screen is loaded and has content but screen does not scroll all the way down
- Messaging history is retained after launching the messaging as an unauth user
- Close conversation dividers is displayed in auto close conversation
- Encryption Recovery after discovering a corrupted keychain so that empty bubbles will not show.
- Fixing input text view cut off on the right side in file preview view.
Crashes fixed
- QuickReply crashes when migrating from an older SDK version
- Unread message crash for unauth type when returning from background.
Version 6.1.0
iOS Messaging SDK
Release date: November 3, 2020
Environment requirements
The iOS Mobile Messaging SDK version 6.1.0 is supported on iOS versions 12 through 14.
This XCFramework was compiled with Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Enhancements
- Change LPLogger default level to .DEBUG from .TRACE
Bugs fixed
- Fixed an issue where In-App Notification is shown behind ConversationViewController if presented modally.
- Fixed an issue when Welcome Message is not presented after PCS expires.
- Fixed an issue when Welcome Message is not presented when force closing CSAT.
- Fixed an issue where connection banner is not presented on correct scenario:
- “Failed to connect to the server” banner is presented before “Offline… Please check your connection” banner after losing internet connection.
- Fixed an issue where Quick Reply messages are out of order when scrolling.
- Fixed an issue where Messages are displayed out of order when using continuity between Web and In-App.
- Fixed an issue when Unread message count notification will be shown above Welcome Message.
- Fixed an issue where SDK will crash while:
- Updating dialog participants for a new conversation,
- Downloading images from remote URL,
- Scrolling the conversation screen,
- Trying to clear Conversation from DB,
- calling LPLoggingHistory.removeFromHistory(),
- calling LPMessagingSDK.clearLocalDatabase(),
- calling ConversationViewController.scrollTableViewTo(),
- calling lpFetchedControllerDidChangeContent()
- Fixed an issue where SDK will crash with error _Invalid_Number_Of_Rows_In_Section.
- Fixed an issue where a Welcome Message with Quick Replies will cause a crash while presenting the Conversation Screen.
- Fixed an issue where some phone regular expressions are not properly mark as links when using bubblePhoneLinksRegex.
- Fixed an issue when the tel url scheme was not properly mark as a link.
Known issues
- Issue with user link message can’t be double tapped to open link when VoiceOver is enabled.
- The message timestamp for Images/Files/Audio gets cut off when choosing large fonts in Accessibility Settings.
- VoiceOver cannot read the agent name while focusing on structure content container.
- The unread message count divider does not show on the conversation screen when the agent sends only one message.
Version 6.0.1
iOS Messaging SDK
Release date: September 2, 2020
Environment requirements
The iOS Mobile Messaging SDK version 6.0.1 is supported on iOS versions 11 through 13.
This XCFramework was compiled with Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53) which means it will work Swift version 5.2.4 and above.
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Contents
- iOS SDK 6.0.1 contains same changes as 6.0.0
- This version also compiles on the XCode 12 beta
Known issues
- The config bubbleEmailLinksRegex is not working properly.
- Crashes on fetched result controller (including but not limited to, Welcome Message and Welcome Message with Quick Replies)
- Conversation view is not displayed properly while the phone is on low network conditions.
- Media messages may not be sent successfully after network connection loss.
- In VoiceOver mode, the content beneath the PDF viewer got announced, and this issue was found in 5.2.0.
- Configs with the types of UIStatusBarStyle(conversationStatusBarStyle, secureFormUIStatusBarStyle and csatUIStatusBarStyle) are not working on iOS 13 due to dark mode.
Version 6.0.0
iOS Messaging SDK
Release date: August 25, 2020
Environment requirements
The iOS Mobile Messaging SDK version 6.0.0 is supported on iOS versions 11 through 13. It is available on Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53).
XCFramework is supported on CocoaPad versions 1.9.0 and greater.
Bugs fixed
- Fixed the issue with the iOS Mobile Messaging SDK where the updated message read status and message received status was not being provided to LiveEngage UI.
- Fixed the issue pertaining to the Agent Typing indicator not showing up for consumers.
- Fixed the issues to eliminate specific crash events.
- Fixed the issue with reconnecting using expired JWT’s from the SDK cache was resolved.
- Fixed the issue related to fetching historical data resulting in incorrect message states being delivered to consumers was resolved.
- Fixed the issue whereby consumers may observe 2 welcome messages when skipping the CSAT.
- Fixed the issue due to a discrepancy between system message background colors between window mode and container view mode within the conversation view.
- Fixed the issue where the “failed to connect” banner appears briefly even if connected when returning from background.
- Fixed the issue where the “conversation was resolved” message may not appear under certain SDK branding configurations.
- Fixed an issue where some phone regular expressions are not properly mark as links when using bubblePhoneLinksRegex
- Fixed an issue when the tel url scheme was not properly mark as a link
- Fixed the edge cases issues for displaying Welcome Messages.
New features
- We have unified the four messaging frameworks (LPInfra, LPMonitoring, LPMessagingSDK, and LPAMS) into 1 framework (LPMessagingSDK). This was done to alleviate confusion for customers by providing a unified API for brands to query our APIs. Additionally, the SDK size has decreased due to removal of duplicate and unnecessary code. We realize that our brands were unanimously using all four frameworks so we decided to lean into this flow by unifying the frameworks. Our public APIs can now be found under the ‘LPMessaging’ class. For more information about integration of the new framework, please follow the guide (link for the quick start).
- When the ‘getEngagement’ request returns with an error message, we will now flush the domain cache providing the ability for subsequent requests to obtain updated domains. This functionality currently exists when connecting via the websocket, and now exists for this rest request as well.
- When the messaging window is moved to the background, the socket now remains open for only 5 seconds rather than 60 seconds. This allows the iOS Mobile Messaging SDK to have parity with the Android SDK and will allow brands to experience a more unified experience across platforms.
- The iOS Mobile Messaging SDK now uses os_log as its base logging object which allows brands to use the standard flow within Xcode to observe logs with the device console as well as sort logs by categories. We will be providing more categories as we continue to make improvements to the SDK allowing our customers to focus on specific behaviors and flows within the SDK.
- In an effort to better support our customers by providing a more stable development experience we now support XCFrameworks. Please see our guide to how to implement the XCFrameworks and note any changes you may need to make to your project’s CI/CD or build settings to take advantage of this new format.
- We now provide a soft “auto logout” feature whereby when a new user identifier is detected we will automatically logout the previous user information but not the brand information, and then allow the new user to attempt to log in, as part of this work, we made some improvements to the SDK Authentication flow to provide a better experience when handling, invalidating and requesting JWTs.
- We have made improvements to our current logging behavior.
Hyperlink support in Messaging
Users using the enhanced Agent Workspace have the ability to share hyperlinks with consumers during a messaging conversation. Now, they can share it with consumers that are messaging over the Mobile SDK.
KB article: Hyperlinks overview
How to enable
To enable this feature, please contact your LivePerson representative (other contact options: chat with us on this page, or message Support).
Limitations
- “Link Preview” will be disabled if Hyperlink in messaging is enabled.
- Hyperlink in messaging from consumer to agent is not supported.
New attributes
- New configurations for hyperlink
-
markdownHyperlinkFromAgent
- Enable or disable hyperlink support. Agent won’t be able to send hyperlink messages if set to false.
- Type: bool
- Default value: true
-
remoteUserBubbleHyperlinkColor
- Set the link message text color.
- Type: color
- Default value: For iOS 13, we use UIColor.label, anything below that uses UIColor.black
New configurations for Structured Content
-
structuredContentButtonBorderColor
- Sets border color for button type element on Structured Content
- Type: color
- Default value: lightBlue
Accessibility compliance highlights the need for links and buttons to have a distinctive UI characteristic, changing this value might break compliance.
-
structuredContentButtonTextColor
- Sets text color for button type element on Structured Content
- Type: color
- Default value: For iOS 13, we use UIColor.label, anything below that uses UIColor.black
-
structuredContentTextColor
- Sets text color for text type element on Structured Content
- Type: color
- Default value: For iOS 13, we use UIColor.label, anything below that uses UIColor.black
Known issues
- The config bubbleEmailLinksRegex is not working properly.
- Crashes on fetched result controller (including but not limited to, Welcome Message and Welcome Message with Quick Replies)
- Conversation view is not displayed properly while the phone is on low network conditions.
- Media messages may not be sent successfully after network connection loss.
- In VoiceOver mode, the content beneath the PDF viewer got announced, and this issue was found in 5.2.0.
- Configs with the types of UIStatusBarStyle(conversationStatusBarStyle, secureFormUIStatusBarStyle and csatUIStatusBarStyle) are not working on iOS 13 due to dark mode.
Version 5.2.0
iOS Messaging SDK
Release date: May 27, 2020
Environment requirements
The iOS Mobile Messaging SDK version 5.2.0 is supported on iOS versions 11 through 13. It is available on Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15), and Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53)
Bugs fixed
- Fixed an issue where white space between keyboard and message area with SDK embedded in tab bar view controller.
- Fixed an issue where a text typed by the user is shown on the input line placeholder ("Write a message").
- Fixed an issue where typing indicator misaligned in Consumer text field.
- Fixed an issue where CSAT displays no Agent icon where agent icon present for agent.
- Fixed an issue where "didFinishWithExpiredToken" not trigger when using Code Flow.
- Fixed an issue where showConversation always create a new socket even when get out and get in within the app.
- Fixed an issue where the color code of System messages gets reset to default when going back into a conversation.
- Fixed an issue where not using device language until you log out of the SDK and back in.
- Fixed an issue where incorrect badge count being saved.
- Fixed an issue where creation date is not set when upload files.
- Fixed multiple issues where multiple localization keys are missing.
- Fixed an issue where send button label doesn't auto fit with width.
- Fixed an issue where photo sharing screen is blocking host app from popping conversation view controller in the navigation view controller stack.
- Fixed an issue where "scrollToBottomButtonBadgeCornerRadius" is not being reflected on the SDK.
- Fixed an issue where inaccurate unread message count between registering and receiving a push notification.
- Fixed an issue where case-sensitive URLs not working.
Accessibility related bugs fixed
- Fixed multiple issues around structured content accessibility with better accessibility labels defined and better scrolling behavior within carousel elements.
- Fixed multiple issues around quick reply accessibility with better scrolling behavior when quick reply buttons are off the screen.
- Fixed an issue where VoiceOver of secure form's header copy is not announced.
- Fixed an issue where VoiceOver reads "fill in form" when UI element is not visible when there are two secure forms on the conversation screen.
- Fixed issue around audio sharing. The VoiceOver implementation surrounding the audio sharing feature has been refined to better articulate what the controls will do and keep the user from becoming confused as to their state while recording.
- Fixed an issue where attachment button in file sharing is announced as "image" in VoiceOver.
- Fixed an issue where in-line text announced as "Button" in VoiceOver but it is not a button in structured content.
- Fixed an issue where hyperlink messages from agent is announced as plain text in VoiceOver.
- Fixed an issue where multiple new messages are received and VoiceOver only reading the last message received.
- Fixed an issue where messages VoiceOver is interrupted by new system messages.
New features
-
New Logging subsystem: New Logging subsystem, which introduces:
- Granular log level controls can now be set as verbose, purely-informational, or completely-off as you desire.
- Data Masking feature ensures no sensitive consumer data can be leaked through system logs, even if they're set to Verbose. Head over to Logging to find out more.
- Playback for Voice messages: Audio messages can now be stopped and previewed before sending them.
- Scroll to bottom button: The width of the "scroll to bottom" button will be auto adjusted based on length of a message text. The button width can be auto adjusted up to half of the device's screen size. This is applicable for both portrait as well as landscape mode.
-
Push registration: Improved Unread Message Count
- Get the count of unread messages that are not yet received by the consumer's device. This API returns the count through the provided callback which is a sum of unread messages in the open as well as closed conversation messages.
- When there are unread messages waiting for the consumer within the brand app, this information can be pushed to display in the app’s notification badge. Within the app, brands can develop their own visualization of a badge, such as a number, icon or other marker to show unread messages.
- This API method uses a threshold mechanism of 10 seconds. If this API is called within 10 seconds from the last request was made, the counter will be returned from SDK cache otherwise a new request to the server will be made to fetch the latest count.
- Two new APIs (getUnreadMessagesCount and isRegisteredForPushNotifications) introduced.
- Two getUnreadMessagesCount APIs deprecated. For more information, please check Messaging APIs for deprecated methods.
- New LPConversationsHistoryStateToDisplay: Add a new enum value (all) for LPConversationsHistoryStateToDisplay. Head over to Messaging API to find out more.
Known issues
- Lag of scroll upon first load: When configured the scrolling configuration as "ScrollToBottom", there is a lag between showing the conversation screen and scrolling to the bottom.
Version 5.1.1
iOS Messaging SDK
Release date: January 22, 2020
Environment requirements
The iOS Mobile Messaging SDK version 5.1.1 is supported on iOS versions 11 through 13. It is available on Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15), and Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9).
Bugs fixed
- Fixed an issue where CSAT was appearing for auto closed conversations
- Fixed an issue where a separator line was being shown while configurations.enableConversationSeparatorLine was disabled
New features
- If the user has denied access before for Audio, Photos, or Camera, the SDK now shows an alert upon usage informing the user that access can be enabled in the settings app.
The message, title, and options buttons for this alert can be customized by updating the values of the LPLocalizable.strings for the keys matching below.
permissionPopUpDeniedOptionNotNow
permissionPopUpDeniedOptionGoToSettings
permissionPopUpDeniedTitle
permissionPopUpDeniedMicrophoneDescription
permissionPopUpDeniedCameraDescription
permissionPopUpDeniedPhotoLibraryDescription
permissionPopUpRestrictedTitle
permissionPopUpRestrictedDescription
For more information on how to override localize keys, see the String Localization page.
Version 5.1.0
iOS Messaging SDK
Release date: January 2, 2020
Environment requirements
The iOS Mobile Messaging SDK version 5.1.0 is supported on iOS versions 11 through 13. It is available on Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15), and Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9).
Bugs fixed
- Issue with background color for Agent Avatar image
- Allow ability to wrap text with in a clickable option for Structured content
Accessibility fixed
- "Fill in form" button does not inform user when it is still loading
- Quick reply text is announced automatically but buttons are not
- VoiceOver begins announcing survey questions as they are published to the chat before they finish loading, causing them to be partially announced, interrupted, then announced again
- If agent sends a hyperlink, the post is announced as plain text, user has no way to know it can be activated
- Elements with functionality of hyperlinks are being announced as buttons
- Attachments are always announced as "image"
- Separator bar after completing PCS survey can receive focus
New features
Scroll Behavior Configuration — clients can customize the scroll behavior for the following scenarios:
-
showConversation
the SDK window is shown via the callshowConversation
-
backgroundToForeground
the SDK Conversation is brought from background to foreground state -
scrollToBottomButtonPressed
the SDK scroll to bottom button is pressed -
pushNotificationTapped
a native push notification was tapped and the SDK APIsetPushNotificationTapped
was called.
For more information, see the Scroll Behavior Configuration page.
unreadMessagesDivider no longer impacts scroll behavior or prevents scrollToBottomButton from being displayed.
Version 5.0.0
iOS Messaging SDK
Release date: October 28, 2019
Environment requirements
The iOS Mobile Messaging SDK version 5.0.0 is supported on iOS versions 11 through 13. It is available on Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9), Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7), and Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5). The iOS Mobile Messaging SDK no longer supports iOS 10.
Bugs fixed
- Fixed an issue where Real-time Masking Auto Message is only triggered once.
- Fixed several issues where a crash could occur in the suspended state.
New features
- Dark Mode Support: The iOS Mobile Messaging SDK Supports Dark Mode for iOS 13. For More information see: Attributes Page
- Support for Sheets: The iOS Mobile Messaging SDK supports Sheets and allows for configuration supporting many of the modal presentation views within the SDK.
- We have changed how we version the iOS SDK. We now follow Apple's standard of using the "Bundle versions string, short" property for the SDK version.
- We have updated our default assets within the SDK to support vector representation.
Dark Mode in iOS 13
We are proud to support dark mode for iOS 13. We have modified how we use UIColors in the SDK. Alll default colors used are now subclasses of UIColor. This will lend many benefits for our consumers using these default colors (except for Structured Content messages as explained above).
Additionally, developers who wish to customize the appearance of the iOS Mobile Messaging SDK only need to pass in UIColors supporting UITraitCollection userinterfacestyles .light
or .unspecificied
and .dark
to have the LPConfig attributes support dark mode. This is explained in more detail in the Attributes Page.
Modal Sheets in iOS 13
With the update of the modal sheet presentation style in iOS 13 we found it exciting that consumers will have more context about their activity in the iOS Mobile Messaging SDK when filling out a CSAT, selecting media to share, or filling out secure content. However, we anticipate that not all users want to use the default configuration so we have provided a new API located in the LPConfig object modalPresentationStyle
.
The default configuration is .fullscreen
, however this can be set to most of the UIPresentationStyles (we do not support .none
or .popover
. If an unsupported value is passed in for this parameter, we will default to .fullscreen
. Additionally, because of how the presenting view is kept alive, some behaviors have changed for non .fullscreen
presentation styles. We have set the camera view mode to .fullscreen
following Apple's User Interface guidelines and we do not allow for configuration of this view.
When CSAT's are dismissed and the consumer is not currently at the bottom of the conversation view, the consumer will no longer be scrolled to the bottom. Now, consumers will remain where they have navigated to in the history when the CSAT is dismissed.
Finally, when in a modal view and the unread message banner appears in the conversation view, it will not be removed when the modal view activates until the consumer interacts with the conversation by sending a message or reloading the view.
Known issues
-
iOS 13 and Structured Content messages: Currently, structured content message colors are sent from the Conversational Cloud Agent Workspace as hexadecimal colors and we cannot be certain of the appearance setting the consumer will have enabled as the structured content message arrives. Currently the iOS Mobile Messaging SDK does not support converting these colors to an alternate appearance for Dark Mode. Therefore, we ask our customers to ensure that colors selected for the structured content JSON are visually legible for both appearance modes for backgrounds and text within the iOS Mobile Messaging SDK.
-
iOS 13 and Secure Form Navigation Bar: Currently, due to an updated modal navigation appearance for iOS 13, the custom background color and text color for the
secureFormNavigationBackgroundColor
andsecureFormNavigationTitleColor
attributes may not be applied for iOS 13 if themodalPresentationStyle
is not set to.fullscreen
.
Deprecation and obsoleted APIs
Previously, our deprecated APIs were set to show deprecation version based on the SDK version. We have changed this to reflect deprecation based on the iOS version that was current at the time of deprecation. This value is approximate for deprecated APIs that have been deprecated for more than a year. Going forward, we will deprecate based on the current iOS version which should work well with Xcode to notify developers of newly deprecated APIs as we work to improve our code and your developer experience. Additionally, we are now utilizing "Obsoleted". All currently deprecated APIs will be Obsoleted after iOS version 13.3.
LPConfig obsoleted properties
- enableFileSharing—use fileSharingFromAgent instead.
- enablePhotoSharing—use fileSharingFromConsumer instead.
- secureFormUIStatusBarStyleLightContent—use secureFormUIStatusBarStyle instead.
- csatUIStatusBarStyleLightContent—use csatUIStatusBarStyle instead.
- ttrBannerOpacityAlpha—use supported light/dark colors on "ttrBannerBackgroundColor" and "ttrBannerTextColor" instead.
- enableStrucutredContent—use enableStructuredContent instead.
- customButtonIconName—use customButtonImage instead.
- customButtonDescription—use customButtonAccessibilityDescription key in Localization language files instead.
- showUrgentButtonInTTRNotification, reason Urgent button was excluded from TTR view. Marking conversation as urgent is available now only from the conversation menu.
- readReceiptTextDistributed—use readReceiptTextDistributed key in Localization language files instead.
- readReceiptTextRead—use readReceiptTextRead key in Localization language files instead.
Version 4.1.0
iOS Messaging SDK
Release date: September 16, 2019
Environment requirements
The iOS Mobile Messaging SDK version 4.1.0 is compatible with Xcode 10.3, Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5), and supported on iOS versions 10 through 12.
The iOS Mobile Messaging SDK version 4.1.0 is supported on iOS versions 10 through 12. It is available on Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5) and Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3).
Bug fixed
- Fixed issue with missing unread message banner when agent send only one message
- Fixed issue with no option to disable push registration when calling showConversation.
- Fixed issue with missing survey bot question in the surveyData object in messaging interactions API.
- Fixed issue with accessibility large font breaks timestamp constraints
- Fixed issue with missing animation for typing after scroll to the bottom while agent is typing.
- Fixed issue with customized image for send button "sendButtonDisabledColor" is not working.
- Fixed issue with LinkPreviewBorderWidth changes is not reflected on SDK.
- Fixed issue with voice over failing to read message author or time. Additionally voice over failing to read message time for structure content.
- Fixed issue with crash on conversation screen.
- Updated public headers from the umbrella header format to have both simulator and device headers in a single file.
New feature
File sharing from consumer to agent
Mobile Messaging SDK v4.1 improves upon the current consumer photo sharing feature.
Consumers can now share information via files with agents such as documents, transaction details and others. This can provide agents with the info they need in order to better help the consumer. Consumers can also download files from resolved conversations.
The iOS SDK supports previewing all the supported file types on the device as per the iOS operating system by tapping on the thumbnail image.
Support for Bitcode is enabled
The LivePerson SDK no longer requires Bitcode to be "Disabled".
Supported document formats from consumer to agent
- DOCX
- PPTX
- XLSX
Photo and file sizes
- Thumbnail — 30 KB (base64-encoded)
- Max upload size allowed — 5 MB uncompressed
Any file larger than 5 MB selected from document picker will trigger an alert view:
Notes and limitations
-
Both photo sharing and file sharing are two way in SDK version 4.1 (agent-to-consumer and consumer-to-agent)
-
If an attempt to view a photo or file is unsuccessful, an error icon covers the thumbnail. Upon retry, the file attempts to download again. Retry can be attempted as many times as possible (in case of a poor network) until the file is downloaded successfully.
-
The consumer can return to a resolved conversation to view the photos, as long as the photos are part of the conversation history.
-
For authenticated users, backgrounding the app while uploading the photo does not get interrupted.
-
For unauthenticated sessions, consumers must tap the photo again with each visit because the history gets cleared when a session expires or logs the consumer out.
-
For app running on iOS version 10.3 or lower with iCloud capability, file sharing from iOS SDK will use iCloud folder as file provider.
-
For app running on iOS version 10.3 or lower without iCloud capability, file sharing from iOS SDK will be disabled (The entry point of file sharing will be hidden.)
-
For app running on iOS version 11 or higher, file sharing from iOS SDK will use native Files app as file provider.
How photo and file sharing works
For more details about how photo and file sharing feature, see Photo and File Sharing
Entry point
-
Paperclip button for presenting the file sharing menu:
-
Document button in the file sharing menu for presenting the native document picker:
New configuration introduced
/// Custom file image in the file Sharing Menu.
public var fileSharingMenuFileImage: UIImage?
/// Custom file image in the file Sharing Menu.
public var fileSharingMenuFileImage: UIImage?
/// Image for custom the thumbnail of unsupported files in file sharing
public var fileSharingUniversalFileThumbnailimage: UIImage? = nil
/// Image for custom the thumbnail of PDF files in file sharing
public var fileSharingPDFFileThumbnailimage: UIImage? = nil
/// Image for custom the thumbnail of PPTX files in file sharing
public var fileSharingPPTXFileThumbnailimage: UIImage? = nil
/// Image for custom the thumbnail of DOCX files in file sharing
public var fileSharingDOCXFileThumbnailimage: UIImage? = nil
/// Image for custom the thumbnail of XLSX files in file sharing
public var fileSharingXLSXFileThumbnailimage: UIImage? = nil
For more details about new configuration see Attributes
Known issue
- When the files number exceed the maxNumberOfSavedDocumentsOnDisk. The SDK will deletes random files to keep the document number within maxNumberOfSavedDocumentsOnDisk (Expected behavior is to delete the oldest ones.)
- Attachment button accessbilityLabel is not updated accordingly.
Version 4.0.0
iOS Messaging SDK
Release date: July 24, 2019
Environment requirements
The iOS Mobile Messaging SDK version 4.0.0 is supported on iOS versions 10 through 12. It is available on Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3).
Bug fix
- Fixed issue with login when using certificate pinning while renewing certificates.
- SDK not recognizing an engagement, causing an issue when registering for campaign for messaging (C4M) where the SDK did not recognize the engagement language.
- LPConversationsHistoryStateToDisplay in close state updating message as read for an open conversation.
- Hidden element is read on accessibility mode.
- Voiceover no longer announces hidden button of submitted secure form.
- Accessibility on element corrected when downloading a file.
- Styled Quick Reply now showing on conversation screen.
- Spacing on top of conversation view after rotating device.
- Incorrect pluralization for unread message banner in English.
- Fixed crash in web socket handler.
- Fixed crash when receiving a file without a thumbnail preview.
- Corrected execute permissions
Updates
- Migrated table view cells from storyboard to xibs.
Version 3.9.5
iOS Messaging SDK
Release date: July 15, 2019
Environment requirements
The iOS Mobile Messaging SDK version 3.9.5 is compatible with Xcode 10.2.1, Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5), and supported on iOS versions 10 through 12.
Bug fix
On non-window mode, history is not loaded and pull to refresh is not visible for few iOS 12 devices.
Version 3.9.4
iOS Messaging SDK
Release date: July 15, 2019
Environment requirements
Supports Xcode 10.2 and Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3), or Objective-C, and supported on iOS versions 10 through 12.
Bug fix
On non-window mode, history is not loaded and pull to refresh is not visible for few iOS 12 devices.
Version 3.9.3
iOS Messaging SDK
Environment requirements
The iOS Mobile Messaging SDK version 3.9.3 is compatible with Xcode 10.2.1, Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5), and supported on iOS versions 10 through 12.
Bug fix
The First Time Ever Welcome Message displayed randomly throughout a conversation. Exposed the Welcome message API to Objective-C.
Version 3.9.2
iOS Messaging SDK
Release date: July 3, 2019
Environment requirements
Supports Xcode 10.2 and Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3), or Objective-C, and supported on iOS versions 10 through 12.
Bug fix
The First Time Ever Welcome Message displayed randomly throughout a conversation. Exposed the Welcome message API to Objective-C.
Version 3.9.1
iOS Messaging SDK
Release date: June 18, 2019
Environment requirements
The iOS Mobile Messaging SDK version 3.9.1 is compatible with Xcode 10.2.1, Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5), and supported on iOS versions 10 through 12.
Bug fixed
Reported in SDK 3.7.1 on iOS. When the customer sent messages just before their current token expires, the agent did not receive one or more of the messages, resulting in data loss. After the initial token expires, the system should issue another token to reconnect and send all messages regardless if the token expires or not.
New feature
Photo and file sharing
Mobile Messaging SDK v3.9 introduces a feature for agents within Conversational Cloud to share photos or files with the consumers.
Agents can share:
-
Photos: Reference photos or photos of any product to visually guide consumers with product awareness, steps on how to use the product, or review comments of a product. They can also share photos in a resolved conversation to resume the conversation with the consumer. Consumers can tap on the photo to view it full screen or share it through the default app on their device.
-
Files: Agents can also share files to provide consumers with information such as mortgage documents, product catalog, or transaction details as requested by consumers. The agent can also share files in a resolved conversation to resume the conversation with the consumer. Consumers can download files through the picker application to a location on their device (internal or external).
The iOS SDK supports previewing all the supported file types on the device as per the iOS operating system by double-clicking on the thumbnail image.
When the agent shares any supported file type from the LE, if the consumer isn't within the conversation view, they get a notification from the customer app only if the push notification is enabled. Otherwise, when the consumer returns to the conversation screen, a thumbnail for the photo or file appears in the conversation window.
Supported formats
- PNG
- JPG/JPEG
- GIF (non-animated) — previewed as a static image only
- DOCX
- PPTX
- XLSX
Photo and file sizes
- Thumbnail — 30 KB (base64-encoded)
-
Max upload size allowed — 5 MB uncompressed
For SDKs previous to 3.8. The max upload size allowed is 3 MB.
Notes and limitations
-
Photo sharing is two way (agent-to-consumer and consumer-to-agent), but file sharing is one way only (agent-to-consumer) for now.
For SDKs previous to 3.8: Photo sharing is one-way only (from consumer-to-agent, but not vice versa) and available for the Mobile Message SDK only.
-
If an attempt to view a photo or file is unsuccessful, an error icon covers the thumbnail. Upon retry, the file attempts to download again. Retry can be attempted as many times as possible (in case of a poor network) until the file is downloaded successfully.
-
The consumer can return to a resolved conversation to view the photos, as long as the photos are part of the conversation history.
-
If an agent sends an unsupported file, a message displays indicating the file type shared with the consumer is not supported, and the agent should retry sending a supported file format. On the consumer side, they see an empty message with no content.
-
For authenticated users, backgrounding the app while loading the photo does not get interrupted.
-
For unauthenticated sessions, consumers must tap the photo again with each visit because the history gets cleared when a session expires or logs the consumer out.
How photo and file sharing works
Step 1. Set app permissions
-
Set the photo library privacy settings:
-
Key: NSPhotoLibraryUsageDescription
-
Value: "A message that tells the user why the app is requesting access to the user's photo library."
-
Key: NSPhotoLibraryAddUsageDescription
Supported on iOS 11 and newer. Use if not sharing photos from consumer to agent.
-
Value: A message that tells the user why the app is requesting write only access to the user's photo library.
Important: The user must explicitly grant permission for your app to access Photos. Prepare your app for this requirement by providing justification strings. The justification string is a localizable message that you add to your app's Info.plist file to tell the user why your app needs access to the user's photo library. For more details, see Requesting Authorization to Access Photos.
-
-
Set the camera privacy settings:
-
Key: NSCameraUsageDescription
-
Value: "Camera Privacy Setting for Conversational Cloud Mobile App Messaging SDK for iOS"
-
-
Set the file sharing privacy settings:
iOS supports the preview of file types per iOS operating system and requires some configurations to be enabled within the Host App's plist file. Enabling supports file sharing, and the export and saving of photos.
-
Key: UIFileSharingEnabled: Application supports iTunes file sharing
-
Value: YES
-
Key: LSSupportsOpeningDocumentsInPlace: Supports opening documents in place
-
Value: YES
If this functionality is important to your user flow, enable at the user's risk. If you enable this setting, the consumer can save documents or photos to a directory belonging to the host app. However, we recommend not enabling this feature due to a current limitation within the LivePerson SDK, the SQL files are also made public if this setting is enabled.
-
Step 2. Enable or disable photo and file sharing within the SDK
-
Change the boolean value:
LPConfig.defaultConfiguration.enablePhotoSharing
By default, the value is set to false.
LPConfig.defaultConfiguration.enableFileSharing
By default, the value is set to true.
-
Contact your Account Team to have the feature enabled on your account.
Step 3. Change the settings
-
Set the max number of photos or files to save on disk (each is configured separately):
// photos LPConfig.defaultConfiguration.maxNumberOfSavedFilesOnDisk // document files LPConfig.defaultConfiguration.maxNumberOfSavedDocumentsOnDisk
The default is 20. If exceeding the max value of photos or files, the SDK deletes the oldest downloaded file.
-
Change the background color of attachment menu:
LPConfig.defaultConfiguration.photosharingMenuBackgroundColor
-
Change the text of buttons:
LPConfig.defaultConfiguration.photosharingMenuButtonsTextColor
-
Change the menu button's background color:
LPConfig.defaultConfiguration.photosharingMenuButtonsBackgroundColor
-
Change the menu button's tint color:
LPConfig.defaultConfiguration.photosharingMenuButtonsTintColor
-
Customize the navigation bar on UIDocumentationInteractionController:
Window Mode:
The UIDocumentationInteractionController adopts applicable branding customizations that have been set, for example:
-
conversationNavigationBackgroundColor sets the NavController tint color with translucence set to false.
-
conversationNavigationTintColor colors the L & R bar buttons as well as the title color.
View Controller Mode:
Your custom applicable navigation bar traits apply to the UIDocumentationInteractionController.
-
You can find all the related configurations in the resources ID table, under Photo Sharing. The color, font selections and other customizations of the message bubbles for file and photo sharing from agents adhere to the remoteUserBubble configurations. For the messages containing photos being shared from consumer to agent can be configured via the userBubble customizations.
Version 3.9.0
iOS Messaging SDK
Release date: June 18, 2019
Environment requirements
The iOS Mobile Messaging SDK version 3.9 is compatible with Xcode 10.2 Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3), or Objective-C, and supported on iOS versions 10 through 12.
Bug fixed
Reported in SDK 3.7.1 on iOS. When the customer sent messages just before their current token expires, the agent did not receive one or more of the messages, resulting in data loss. After the initial token expires, the system should issue another token to reconnect and send all messages regardless if the token expires or not.
New feature
Photo and file sharing
Mobile Messaging SDK v3.9 introduces a feature for agents within Conversational Cloud to share photos or files with the consumers.
Agents can share:
-
Photos: Reference photos or photos of any product to visually guide consumers with product awareness, steps on how to use the product, or review comments of a product. They can also share photos in a resolved conversation to resume the conversation with the consumer. Consumers can tap on the photo to view it full screen or share it through the default app on their device.
-
Files: Agents can also share files to provide consumers with information such as mortgage documents, product catalog, or transaction details as requested by consumers. The agent can also share files in a resolved conversation to resume the conversation with the consumer. Consumers can download files through the picker application to a location on their device (internal or external).
The iOS SDK supports previewing all the supported file types on the device as per the iOS operating system by double-clicking on the thumbnail image.
When the agent shares any supported file type from the LE, if the consumer isn't within the conversation view, they get a notification from the customer app only if the push notification is enabled. Otherwise, when the consumer returns to the conversation screen, a thumbnail for the photo or file appears in the conversation window.
Supported formats
- PNG
- JPG/JPEG
- GIF (non-animated) — previewed as a static image only
- DOCX
- PPTX
- XLSX
Photo and file sizes
- Thumbnail — 30 KB (base64-encoded)
-
Max upload size allowed — 5 MB uncompressed
For SDKs previous to 3.8. The max upload size allowed is 3 MB.
Notes and limitations
-
Photo sharing is two-way (agent-to-consumer and consumer-to-agent), but file sharing is one-way only (agent-to-consumer) for now.
For SDKs previous to 3.8: Photo sharing is one-way only (from consumer-to-agent, but not vice versa) and available for the Mobile Message SDK only.
-
If an attempt to view a photo or file is unsuccessful, an error icon covers the thumbnail. Upon retry, the file attempts to download again. Retry can be attempted as many times as possible (in case of a poor network) until the file is downloaded successfully.
-
The consumer can return to a resolved conversation to view the photos, as long as the photos are part of the conversation history.
-
If an agent sends an unsupported file, a message displays indicating the file type shared with the consumer is not supported, and the agent should retry sending a supported file format. On the consumer side, they see an empty message with no content.
-
For authenticated users, backgrounding the app while loading the photo does not get interrupted.
-
For unauthenticated sessions, consumers must tap the photo again with each visit because the history gets cleared when a session expires or logs the consumer out.
How photo and file sharing works
Step 1. Set app permissions
-
Set the photo library privacy settings:
-
Key: NSPhotoLibraryUsageDescription
-
Value: "A message that tells the user why the app is requesting access to the user's photo library."
-
Key: NSPhotoLibraryAddUsageDescription
Supported on iOS 11 and newer. Use if not sharing photos from consumer to agent.
-
Value: A message that tells the user why the app is requesting write only access to the user's photo library.
Important: The user must explicitly grant permission for your app to access Photos. Prepare your app for this requirement by providing justification strings. The justification string is a localizable message that you add to your app's Info.plist file to tell the user why your app needs access to the user's photo library. For more details, see Requesting Authorization to Access Photos.
-
-
Set the camera privacy settings:
-
Key: NSCameraUsageDescription
-
Value: "Camera Privacy Setting for Conversational Cloud Mobile App Messaging SDK for iOS"
-
-
Set the file sharing privacy settings:
iOS supports the preview of file types per iOS operating system and requires some configurations to be enabled within the Host App's plist file. Enabling supports file sharing, and the export and saving of photos.
-
Key: UIFileSharingEnabled: Application supports iTunes file sharing
-
Value: YES
-
Key: LSSupportsOpeningDocumentsInPlace: Supports opening documents in place
-
Value: YES
If this functionality is important to your user flow, enable at the user's risk. If you enable this setting, the consumer can save documents or photos to a directory belonging to the host app. However, we recommend not enabling this feature due to a current limitation within the LivePerson SDK, the SQL files are also made public if this setting is enabled.
-
Step 2. Enable or disable photo and file sharing within the SDK
-
Change the boolean value:
LPConfig.defaultConfiguration.enablePhotoSharing
By default, the value is set to false.
LPConfig.defaultConfiguration.enableFileSharing
By default, the value is set to true.
-
Contact your Account Team to have the feature enabled on your account.
Step 3. Change the settings
-
Set the max number of photos or files to save on disk (each is configured separately):
// photos LPConfig.defaultConfiguration.maxNumberOfSavedFilesOnDisk // document files LPConfig.defaultConfiguration.maxNumberOfSavedDocumentsOnDisk
The default is 20. If exceeding the max value of photos or files, the SDK deletes the oldest downloaded file.
-
Change the background color of attachment menu:
LPConfig.defaultConfiguration.photosharingMenuBackgroundColor
-
Change the text of buttons:
LPConfig.defaultConfiguration.photosharingMenuButtonsTextColor
-
Change the menu button's background color:
LPConfig.defaultConfiguration.photosharingMenuButtonsBackgroundColor
-
Change the menu button's tint color:
LPConfig.defaultConfiguration.photosharingMenuButtonsTintColor
-
Customize the navigation bar on UIDocumentationInteractionController:
Window Mode:
The UIDocumentationInteractionController adopts applicable branding customizations that have been set, for example:
-
conversationNavigationBackgroundColor sets the NavController tint color with translucence set to false.
-
conversationNavigationTintColor colors the L & R bar buttons as well as the title color.
View Controller Mode:
Your custom applicable navigation bar traits apply to the UIDocumentationInteractionController.
-
You can find all the related configurations in the resources ID table, under Photo Sharing. The color, font selections and other customizations of the message bubbles for file and photo sharing from agents adhere to the remoteUserBubble configurations. For the messages containing photos being shared from consumer to agent can be configured via the userBubble customizations.
Version 3.8.2
iOS Messaging SDK
Environment requirements
The iOS Mobile Messaging SDK version 3.8.2 is compatible with Xcode 10.2.1, Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5), and supported on iOS versions 10 through 12.
New feature
Welcome message with quick reply options
Version 3.8 of the Mobile Messaging SDK introduces a Welcome message with quick reply options in the conversation window. When a consumer starts a new conversation, or a new customer visits the site, brands can send the first message with a list of quick replies of common intents.
You can configure the Welcome message as a simple text message with or without quick replies, for example:
Welcome to our support! What can we help you with today?
[Questions about existing account] [open a new account] [tech support]
A consumer’s quick reply selection or answer gets inserted as their first message in the conversation, which opens the conversation in the Conversational Cloud agent workspace.
How to enable
//Welcome message
let welcomeMessageParam = LPWelcomeMessage(message: "Hello Mr.Bond")
//adding options
let options: [LPWelcomeMessage.MessageOption] = [
LPWelcomeMessage.MessageOption(value: "music", displayName: "awesome tunes"),
LPWelcomeMessage.MessageOption(value: "food", displayName: "Delicious food "),
]
do {
try welcomeMessageParam.set(options: options)
} catch {
print(error.localizedDescription)
}
//ConversationViewParams
let conversationViewParams = LPConversationViewParams(conversationQuery: conversationQuery,
containerViewController: nil,
isViewOnly: false,
conversationHistoryControlParam: conversationHistoryControlParam,
welcomeMessage: welcomeMessageParam)
//show conversation
LPMessagingSDK.instance.showConversation(conversationViewParams, authenticationParams: authenticationParams)
Limitations
You can configure up to 24 quick reply options for the user to choose.
-
You have a maximum of 25 characters for your title, but anything over displays an ellipsis after the 22nd character. When building your client, you have control over the character limit for the title.
-
When the consumer ends the conversation, the window remains open, and the Welcome message appears again.
-
Quick reply messages do not get recorded in the conversation history.
-
The conversational metadata (ExternalId) does not get populated.
"metadata": [
{
"type": "ExternalId",
"id": "Yes-1234"
}
]
Bug fixes
-
When the
unreadMessagesDividerEnabled
attribute equaled false, the conversation window did not jump/scroll to the latest messages received by the agent as expected. Regardless ofunreadMessagesDividerEnabled
value, the conversation screen will always scroll to the last position where the user left off.By default, the Unread Message Divider separator appears in the message view. When enabled, this feature does not prevent the badge or message text from displaying on the Scroll to Bottom button. Instead, the Unread Message Divider system message displays above the unread messages within the view of the user when returning to the conversation view. When disabled, the separator does not appear, and the unread message badge count displays on the Scroll to Bottom button.
-
Fallback to Signup Flow still existed. The bug prevented users from starting an authenticated conversation, and instead, the conversation started an unauthenticated visitor mode chat.
-
Send Image (From Gallery) failed. The bug prevented users from uploading images larger than 3MB, resulting in a ‘file too large’ message. Version 3.8 of the Mobile Messaging SDK increased the size limit to 5MB.
-
On iOS 12.2 Swift 5, the conversation screen did not show the sent or received messages and the margins appeared between messages.
-
Accessibility: voice over read old conversations. The bug prevented the voice over feature, when enabled, to read the current conversation, and instead, skipping back to old conversations.
-
When trying to reconnect with a JWT after the initial token expired, an INVALID JWT warning appeared and showed a black bar even though the conversation continued without error.
-
Before the token expired, the agent did not receive one or more messages resulting in data loss. The bug prevented messages from being sent regardless of the token expiration.
-
For iOS versions lower than 12. When starting an unauthenticated conversation then backgrounding the app and then foregrounding it again, the loading screen remained displayed. The bug prevented users from going in and out of the conversation without issue.
iOS API Updates
LPAMSFacade / LPMessagingAPI
New for 3.8
public class func createWelcomeLocalMessage(_ dialog: Dialog, welcomeMessage: LPWelcomeMessage, overrideTime: Date = Date()) -> Message?
Changes for 3.7.1 (deprecated)
public class func createWelcomeLocalMessage(_ dialog: Dialog, overrideTime: Date = Date()) -> Message?
LPConversationViewParams
New for 3.8
public init(conversationQuery: ConversationParamProtocol,
containerViewController: UIViewController? = nil,
isViewOnly: Bool = false,
conversationHistoryControlParam: LPConversationHistoryControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .none),
welcomeMessage: LPWelcomeMessage = LPWelcomeMessage(message: nil))
Changes for 3.7.1 (deprecated)
public init(conversationQuery: ConversationParamProtocol,
containerViewController: UIViewController? = nil,
isViewOnly: Bool = false,
conversationHistoryControlParam: LPConversationHistoryControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .none))
)})
MAX_SWIFT_ALLOWED_UPLOAD_PHOTO_SIZE_IN_BYTE
New for 3.8
MAX_SWIFT_ALLOWED_UPLOAD_PHOTO_SIZE_IN_BYTE = 5MB
Changes for 3.7.1
MAX_ALLOWED_UPLOAD_PHOTO_SIZE_IN_MB = 3MB
Version 3.8.1
iOS Messaging SDK
Environment requirements
The iOS Mobile Messaging SDK version 3.8.1 is compatible with Xcode 10.2.0, Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3), and supported on iOS versions 10 through 12.
New feature
Welcome message with quick reply options
Version 3.8 of the Mobile Messaging SDK introduces a Welcome message with quick reply options in the conversation window. When a consumer starts a new conversation, or a new customer visits the site, brands can send the first message with a list of quick replies of common intents.
You can configure the Welcome message as a simple text message with or without quick replies, for example:
Welcome to our support! What can we help you with today?
[Questions about existing account] [open a new account] [tech support]
A consumer’s quick reply selection or answer gets inserted as their first message in the conversation, which opens the conversation in the Conversational Cloud agent workspace.
How to enable
//Welcome message
let welcomeMessageParam = LPWelcomeMessage(message: "Hello Mr.Bond")
//adding options
let options: [LPWelcomeMessage.MessageOption] = [
LPWelcomeMessage.MessageOption(value: "music", displayName: "awesome tunes"),
LPWelcomeMessage.MessageOption(value: "food", displayName: "Delicious food "),
]
do {
try welcomeMessageParam.set(options: options)
} catch {
print(error.localizedDescription)
}
//ConversationViewParams
let conversationViewParams = LPConversationViewParams(conversationQuery: conversationQuery,
containerViewController: nil,
isViewOnly: false,
conversationHistoryControlParam: conversationHistoryControlParam,
welcomeMessage: welcomeMessageParam)
//show conversation
LPMessagingSDK.instance.showConversation(conversationViewParams, authenticationParams: authenticationParams)
Limitations
You can configure up to 24 quick reply options for the user to choose.
-
You have a maximum of 25 characters for your title, but anything over displays an ellipsis after the 22nd character. When building your client, you have control over the character limit for the title.
-
When the consumer ends the conversation, the window remains open, and the Welcome message appears again.
-
Quick reply messages do not get recorded in the conversation history.
-
The conversational metadata (ExternalId) does not get populated.
"metadata": [
{
"type": "ExternalId",
"id": "Yes-1234"
}
]
Bug fixes
-
When the
unreadMessagesDividerEnabled
attribute equaled false, the conversation window did not jump/scroll to the latest messages received by the agent as expected.By default, the Unread Message Divider separator appears in the message view. When enabled, this feature does not prevent the badge or message text from displaying on the Scroll to Bottom button. Instead, the Unread Message Divider system message displays above the unread messages within the view of the user when returning to the conversation view. When disabled, the separator does not appear, and the unread message badge count displays on the Scroll to Bottom button.
-
Fallback to Signup Flow still existed. The bug prevented users from starting an authenticated conversation, and instead, the conversation started an unauthenticated visitor mode chat.
-
Send Image (From Gallery) failed. The bug prevented users from uploading images larger than 3MB, resulting in a ‘file too large’ message. Version 3.8 of the Mobile Messaging SDK increased the size limit to 5MB.
-
On iOS 12.2 Swift 5, the conversation screen did not show the sent or received messages and the margins appeared between messages.
-
Accessibility: voice over read old conversations. The bug prevented the voice over feature, when enabled, to read the current conversation, and instead, skipping back to old conversations.
-
When trying to reconnect with a JWT after the initial token expired, an INVALID JWT warning appeared and showed a black bar even though the conversation continued without error.
-
Before the token expired, the agent did not receive one or more messages resulting in data loss. The bug prevented messages from being sent regardless of the token expiration.
-
For iOS versions lower than 12. When starting an unauthenticated conversation then backgrounding the app and then foregrounding it again, the loading screen remained displayed. The bug prevented users from going in and out of the conversation without issue.
iOS API Updates
LPAMSFacade / LPMessagingAPI
New for 3.8
public class func createWelcomeLocalMessage(_ dialog: Dialog, welcomeMessage: LPWelcomeMessage, overrideTime: Date = Date()) -> Message?
Changes for 3.7.1 (deprecated)
public class func createWelcomeLocalMessage(_ dialog: Dialog, overrideTime: Date = Date()) -> Message?
LPConversationViewParams
New for 3.8
public init(conversationQuery: ConversationParamProtocol,
containerViewController: UIViewController? = nil,
isViewOnly: Bool = false,
conversationHistoryControlParam: LPConversationHistoryControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .none),
welcomeMessage: LPWelcomeMessage = LPWelcomeMessage(message: nil))
Changes for 3.7.1 (deprecated)
public init(conversationQuery: ConversationParamProtocol,
containerViewController: UIViewController? = nil,
isViewOnly: Bool = false,
conversationHistoryControlParam: LPConversationHistoryControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .none))
)})
MAX_SWIFT_ALLOWED_UPLOAD_PHOTO_SIZE_IN_BYTE
New for 3.8
MAX_SWIFT_ALLOWED_UPLOAD_PHOTO_SIZE_IN_BYTE = 5MB
Changes for 3.7.1
MAX_ALLOWED_UPLOAD_PHOTO_SIZE_IN_MB = 3MB
Version 3.8.0
iOS Messaging SDK
Environment requirements
The iOS Mobile Messaging SDK version 3.8 is compatible with Xcode 10.2.1, Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5), and supported on iOS versions 10 through 12.
The iOS Mobile Messaging SDK version 3.8 is not compatible with simulators when running in an Objective-C project.
New feature
Welcome message with quick reply options
Version 3.8 of the Mobile Messaging SDK introduces a Welcome message with quick reply options in the conversation window. When a consumer starts a new conversation, or a new customer visits the site, brands can send the first message with a list of quick replies of common intents.
You can configure the Welcome message as a simple text message with or without quick replies, for example:
Welcome to our support! What can we help you with today?
[Questions about existing account] [open a new account] [tech support]
A consumer’s quick reply selection or answer gets inserted as their first message in the conversation, which opens the conversation in the Conversational Cloud agent workspace.
How to enable
//Welcome message
let welcomeMessageParam = LPWelcomeMessage(message: "Hello Mr.Bond")
//adding options
let options: [LPWelcomeMessage.MessageOption] = [
LPWelcomeMessage.MessageOption(value: "music", displayName: "awesome tunes"),
LPWelcomeMessage.MessageOption(value: "food", displayName: "Delicious food "),
]
do {
try welcomeMessageParam.set(options: options)
} catch {
print(error.localizedDescription)
}
//ConversationViewParams
let conversationViewParams = LPConversationViewParams(conversationQuery: conversationQuery,
containerViewController: nil,
isViewOnly: false,
conversationHistoryControlParam: conversationHistoryControlParam,
welcomeMessage: welcomeMessageParam)
//show conversation
LPMessagingSDK.instance.showConversation(conversationViewParams, authenticationParams: authenticationParams)
Limitations
You can configure up to 24 quick reply options for the user to choose.
-
You have a maximum of 25 characters for your title, but anything over displays an ellipsis after the 22nd character. When building your client, you have control over the character limit for the title.
-
When the consumer ends the conversation, the window remains open, and the Welcome message appears again.
-
Quick reply messages do not get recorded in the conversation history.
-
The conversational metadata (ExternalId) does not get populated.
"metadata": [
{
"type": "ExternalId",
"id": "Yes-1234"
}
]
Bug fixes
-
When the
unreadMessagesDividerEnabled
attribute equaled false, the conversation window did not jump/scroll to the latest messages received by the agent as expected.By default, the Unread Message Divider separator appears in the message view. When enabled, this feature does not prevent the badge or message text from displaying on the Scroll to Bottom button. Instead, the Unread Message Divider system message displays above the unread messages within the view of the user when returning to the conversation view. When disabled, the separator does not appear, and the unread message badge count displays on the Scroll to Bottom button.
-
Fallback to Signup Flow still existed. The bug prevented users from starting an authenticated conversation, and instead, the conversation started an unauthenticated visitor mode chat.
-
Send Image (From Gallery) failed. The bug prevented users from uploading images larger than 3MB, resulting in a ‘file too large’ message. Version 3.8 of the Mobile Messaging SDK increased the size limit to 5MB.
-
On iOS 12.2 Swift 5, the conversation screen did not show the sent or received messages and the margins appeared between messages.
-
Accessibility: voice over read old conversations. The bug prevented the voice over feature, when enabled, to read the current conversation, and instead, skipping back to old conversations.
-
When trying to reconnect with a JWT after the initial token expired, an INVALID JWT warning appeared and showed a black bar even though the conversation continued without error.
-
Before the token expired, the agent did not receive one or more messages resulting in data loss. The bug prevented messages from being sent regardless of the token expiration.
-
For iOS versions lower than 12. When starting an unauthenticated conversation then backgrounding the app and then foregrounding it again, the loading screen remained displayed. The bug prevented users from going in and out of the conversation without issue.
iOS API Updates
LPAMSFacade / LPMessagingAPI
New for 3.8
public class func createWelcomeLocalMessage(_ dialog: Dialog, welcomeMessage: LPWelcomeMessage, overrideTime: Date = Date()) -> Message?
Changes for 3.7.1 (deprecated)
public class func createWelcomeLocalMessage(_ dialog: Dialog, overrideTime: Date = Date()) -> Message?
LPConversationViewParams
New for 3.8
public init(conversationQuery: ConversationParamProtocol,
containerViewController: UIViewController? = nil,
isViewOnly: Bool = false,
conversationHistoryControlParam: LPConversationHistoryControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .none),
welcomeMessage: LPWelcomeMessage = LPWelcomeMessage(message: nil))
Changes for 3.7.1 (deprecated)
public init(conversationQuery: ConversationParamProtocol,
containerViewController: UIViewController? = nil,
isViewOnly: Bool = false,
conversationHistoryControlParam: LPConversationHistoryControlParam = LPConversationHistoryControlParam(historyConversationsStateToDisplay: .none))
)})
MAX_SWIFT_ALLOWED_UPLOAD_PHOTO_SIZE_IN_BYTE
New for 3.8
MAX_SWIFT_ALLOWED_UPLOAD_PHOTO_SIZE_IN_BYTE = 5MB
Changes for 3.7.1
MAX_ALLOWED_UPLOAD_PHOTO_SIZE_IN_MB = 3MB
Version 3.7.1
iOS Messaging SDK
Environment requirements
Supports Xcode 10.2 and Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3), or Objective-C.
Version 3.7.0
iOS Messaging SDK
Environment requirements
iOS Mobile App SDK v3.7 is compatible with XCode 10, Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1) and is supported on iOS versions 10 through 12.
iOS SDK 3.7 compatibility with XCode 10.2, Swift 5 will be released as 3.7.1 on or before April 5 2019.
API updates
LPAMSFacade.swift
New method for 3.7
public class func resolveConversation(_ conversation: Conversation, completion: (() -> Void)? = {()})
public class func resolveConversationForConversationQuery(_ conversationQuery: ConversationParamProtocol, completion: (() -> Void)? = {()})
Deprecated method (3.6.1)
public class func resolveConversation(_ conversation: Conversation)
public class func resolveConversationForConversationQuery(_ conversationQuery: ConversationParamProtocol)
LPConversationViewParams.swift
New for 3.7
LPConversationViewParams initializer requires LPConversationHistoryControlParam.
Changes for 3.6.1
LPConversationViewParams initializer takes optional LPConversationHistoryControlParam.
LPConversationHistoryControlParam.swift
New for 3.7
LPConversationHistoryControlParam can no longer be nil for ConversationViewController.
Changes for 3.6.1
LPConversationHistoryControlParam can be nil for ConversationViewController.
SocketRocket
New for 3.7
Namespacing for SR dependency.
Bug fixes
- Signup/Unauthenticated Users were unable to start a new Conversation after PCS.
- Web socket Handler crashed the host-app in production.
- SDK crashes when receiving an empty Structured Content Card.
- When clicking the default back button, the socket wouldn't close.
- PCS would not show when the user resolved a conversation using a Custom View.
- In-app push sometimes showed the real message instead of the masking message.
- Memory Leaks found in SDK.
- Local Notification were displayed on alert rather than on top of the screen.
- Namespacing internal 3rd party libraries to prevent a collision.
Version 3.6.1
iOS Messaging SDK
Environment requirements
iOS Mobile App SDK v3.6.1 is compatible with XCode 10, Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1) and is supported on iOS versions 10 through 12.
Bug fixes
The LPMessagingSDKNotificationDelegate
delegate call did not trigger.
Version 3.6.0
iOS Messaging SDK
Environment requirements
iOS Mobile App SDK v3.6 is compatible with XCode 10, Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1) and is supported on iOS versions 10 through 12.
API updates
Infra/LPInfraFacade.swift
New method
public class func unregisterPusherFor( brandId: String, completion: @escaping ()->(), failure: @escaping ( error: Error)->())
Deprecated method
public class func unregisterPusher( brand: Brand, completion: @escaping ()->(), failure: @escaping ( error: Error)->())
Updated pusher errors
Error Code | Error |
---|---|
-1 | non supported Device (ie simulator) |
-2 | network unreachable |
-4 | no response from server |
-5 | token expired |
-10 | failed to register |
-20 | failed to unregister |
-30 | failed to get unread message count |
Bug fixes
-
CSAT submit button is disabled in window mode.
-
Socket won't close with non-custom back button.
-
QR button visibility issues when toggling application state.
-
Application instability caused by future time set on device.
-
Multiple apps on device each sharing user cannot deregister from pusher.
-
LPTMesssagingSDKTokenExpired
delegate call not being triggered. -
Reconnecting in unauthenticated fails after JWT expires.
-
System messages do not change to Chinese while device is language is Chinese and the region is in China. Currently SDK system messages do not support the scenario in which language and region are not in sync (For example, device language is in Chinese while the region is in the US).
-
“Still Connecting…” error when app is brought to foreground using springboard.
-
Connection issues after establishing network connection in background and returning to conversation.
-
Cannot resume unauthenticated conversation when toggling between app states.
-
Cannot continue typing in an authenticated conversation if app is placed into the background before sending 1st message.
-
Customers can get stuck in signup flow.
-
Protocol sniffing appears to not be compatible with iOS 12.
-
Constant “Loading…” message in unauthenticated flow after opening Notifications Center.
-
Optimization of determining application state during UI transitions.
-
For 1st unread message, no indication of “Unread Messages” is set within the conversation window.
-
Automatic messages no longer appear outside of conversation window while in background state.
-
Socket connectivity for active conversation without network connection.
Known issues
Through a series of changing application state, extended backgrounding, and intermittent messaging, occasionally (4%) the user can produce a state where some messages do not appear. Work-around for consumer is reloading the conversation view.
Version 3.5.0
iOS Messaging SDK
Environment requirements
iOS Mobile App SDK v3.5 is compatible with Xcode 10, Swift 4.2 and iOS versions 10 through 12
Known issue
There is a known issue related to entering the conversation view controller with an expired token. The consumer observes a "still connecting" message which can be resolved by exiting and re-entering the conversation view controller.
Bug fixes
-
When an unauthenticated consumer attempts to reconnect after their session expires (when using JSON Web Tokens) the connection fails.
-
Push notifications are not being received when going to background (minimizing app) due to issues with network.
-
When a consumer is in active conversation and an agent resolves the conversation, the unread message indicator appears but there are new messages visible and the consumer can not scroll down.
-
Consumer can not scroll to the latest message when there is no assigned agent and the conversation is closed.
-
Conversation does not automatically scrolls to the bottom when survey starts/ends.
-
When returning from background banner indicating the count of unread messages is incorrect.
-
App freezes (experiences recursive cycles) on phones which the time has been set in the future. Interim solution: Retry attempts have been limited for consumers with expired JSON Web Tokens trying to authenticate. Once this limit is hit, LP Messaging SDK will post the SDK_AUTHENTICATION_FAILED notification which will trigger the LPMessagingSDKAuthenticationFailed delegate method. A client app can use either of these mechanisms to stop the authorization attempt and notify the consumer they need to obtain a valid token. After the notification has been posted, the authentication retries will be reset.
-
In the Agent Console, the consumer conversation information (OS Type and Device) is not updated while switching platforms IOS/Android or OS versions. Update: The current design of Conversational Cloud platform cannot currently accommodate this request. This can be implemented in a future Conversational Cloud platform update.
API update
The LPInfraFacad method registerPusherWithLoginFlow(brand) has been updated to registerPusherWithLoginFlow(brand: Brand, authenticationParams: LPAuthenticationParams?) allowing for an optional "Authentication Parameters" dictionary to be passed to aid in determining the status and routing of authentication for the current consumer.
Version 3.4.0
iOS Messaging SDK
iOS Mobile App SDK v3.4 does not include new features and there are no API changes.
Environment requirements
iOS Mobile App SDK v3.4 is compatible with Xcode 10, Swift 4.2 and iOS versions 9 through 12.
Bug fixes
-
App crash when setting the phone’s time to future.
-
In some cases, when going into the conversation screen, the keyboard covers the text area.
-
Unauthenticated conversation doesn’t get connected when providing an engagement using an entry point.
-
When using unauthenticated messaging and setting the history flag to false, in case the conversation was resolved while the SDK was in the background, the conversation screen will be stuck and the consumer will not be able to start a new conversation.
-
Accessibility — Secure Form description is not announced properly.
-
Monitoring APIs — SDK is not using the returned VID when querying "getEngagement" request. This might cause a longer time for getting a response.
-
In some cases, when the consumer returns to an ongoing conversation, error shows up and the consumer cannot send any messages.
-
Redundant CSAT is shown when Agent activates PCS in conversation.
-
In some cases, when the JWT expires, there is no delegate being triggered after showConversation method is called.
Version 3.3.0
iOS Messaging SDK
iOS Mobile App SDK v3.3 contains support for the Post Conversation Survey feature, support for iOS 12, Xcode 10 and Swift 4.2 and addresses several bugs reported by customers.
Environment requirements
iOS Mobile App SDK v3.3 is compatible with Xcode 10, Swift 4.2 and iOS versions 9 through 12.
Main features
Post conversation survey
Available to all customers? No. Please contact account team.
Description
The post conversation survey enables brands to both collect feedback and measure their success from their consumers after conversations have taken place. The survey is delivered via a conversational experience to drive higher completion rates and provide consumers with the best experience possible.
Brands can customize the survey to their needs, including predefined questions (CSAT, NPS and FCR), custom questions and free text, as well as the ability to configure the logic and flow from question to question.
This enables brands to prove the success of messaging and compare their KPIs across different channels. Additional information about Post Conversation Survey can be found here .
Support for iOS 12, Xcode 10 and Swift 4.2
Available to all customers? Yes.
Description
Mobile App SDK v3.3 supports iOS 12, Xcode 10 and Swift 4.2.
Bug fixes
-
In some cases, when consumers would go into the conversation screen, the loading progress bar would get stuck.
-
When starting to fill a secure form, if a customer exits out of the form and opens a new secure form, the values from the first form appear in the new form for about a second and then disappear.
-
When applying a regex for real time masking, the entire string will be affected rather than only the matching part.
-
Missing auto scroll to bottom when a conversation is closed.
-
The first message is hidden when using the Control History APIs. After sending the second message, all messages will be visible.
-
In some cases, when consumers send the app to the background and later return to the conversation screen, the socket will not get connected and the consumer will not be able to send/receive messages.
-
When going into the conversation screen after the app was killed, the screen will be scrolled to the top instead of to the bottom.
-
When replacing rootViewController, in-app push notifications stops working.
-
If a failure occurred while unregistering for Push Notifications, customers were unable to logout from the SDK.
-
When Voiceover is turned on, the Secure Forms ‘X’ button reads “stop” instead of “close”.
-
When Voiceover is turned on and the send button is customized, the send message button reads as “button” instead of the button’s functionality.
-
When Voiceover is turned on, when reading messages, agent reads as “agent” instead of the agent’s nickname.
Known issues
- Resolving unauthenticated conversations fails when setting the flag ‘show history for closed messaging conversations’ to no. The feature works as expected when the flag is set to yes.
Version 3.2.6
iOS Messaging SDK
Version 3.2.6 includes fixes for the following bugs:
-
In some cases, when consumers sent the app to the background and later returned to the conversation screen, the socket would not get connected and the consumer was not able to send or receive messages.
-
After killing the app,
getEngagement
(a Monitoring API method) would not return the details of the open conversation.
Version 3.2.5
iOS Messaging SDK
Version 3.2.5 includes fixes for the following bugs:
-
In some cases, when consumers would go into the conversation screen, the loading progress bar would get stuck.
-
When starting to fill a secure form, if a customer exits out of the form and opens a new secure form, the values from the first form appears in the new form for a ~second and then disappeared.
- When applying a regex for real time masking, the entire string will be affected rather than only the matching part.
-
Missing auto scroll to bottom when a conversation is closed.
-
The first message is hidden when using the Control History APIs. After sending the second message, all messages will be visible.
-
In some cases, when consumers send the app to the background and later return to the conversation screen, the socket will not get connected and the consumer will not be able to send\receive messages.
-
When going into the conversation screen after the app was killed, the screen will be scrolled to the top instead to the bottom.
-
When replacing rootViewController, in-app push notifications stops working.
- If a failure occurred while unregistering for Push Notifications, customers were unable to logout from the SDK
The full release notes can be found here.
Version 3.2.4
iOS Messaging SDK
iOS Messaging SDK v3.2.4 contains the following bug fix:
Symptom
The SDK would crash after the user sent messages in iOS 12.
Fix
The user can now send messages without an SDK crash when running on iOS 12.
Version 3.2.3
iOS Messaging SDK
iOS Messaging SDK v3.2.3 contains the following bug fix:
Symptom
When a consumer tried to enter into an existing conversation after the agent marked it as closed, loading the history failed and the consumer couldn't see the conversation window.
Fix
The SDK will now clear the notification and history manager when logging out. This will cause the removal of empty conversations from previous sessions and loading the history will fetch only relevant conversations.
Version 3.2.2
iOS Messaging SDK
iOS Messaging SDK v3.2.2 contains the following bug fixes:
Symptom
When calling getEngagement while there is an active conversation which is not related to a campaign, the response returns an error.
Fix
When calling getEngagement while there is an active conversation which is not related to a campaign, a response will be returned with the available information.
Symptom
In some cases, the badge counter was returned with an incorrect value, which represents a previous value. For example, when an agent sent messages while the conversation screen was in the background.
Fix
The badge counter is now showing the actual value.
Symptom
In case of a failure in ‘logout’, the user’s data might be displayed with empty message bubbles the next time that the consumer opens the conversation screen.
Fix
The user’s data is now cleared as expected only if the ‘logout’ succeeded.
Symptom
In some cases, the badge counter was returned with an incorrect value, which represents a previous value.
Fix
The badge counter is now showing the actual value regardless the state of the conversation.
Version 3.2.1
iOS Messaging SDK
iOS Messaging SDK v3.2.1 contains the following bug fixes:
Symptom
When trying to get the number of unread messages and the token expired, the SDK doesn’t provide a relevant indication.
Fix
When trying to get the number of unread messages and the token expired, a token expired callback will now be returned.
Version 3.2.0
iOS Messaging SDK
Version 3.2 roll-out: July 1st 2018
Main features
Audio messaging
Type: Consumer Experience Feature
Available to all customers? No. Please contact your account team.
Consumers are now able to send Audio messages to brands which makes the communication even better.
In Audio messages, the Brands can configure:
- The maximum length of the message (15 seconds – 2 minutes long by default)
- Enable/Disable the feature
- Max stored audio messages on device
- Tooltips text
Unauthenticated in-app messaging
Type: Developer Experience Feature
Available to all customers? Yes.
Brands can communicate with their consumers in an unauthenticated manner while being able to leverage additional Conversational Cloud capabilities such as Campaigns for Messaging.
Unauthenticated messaging allows brands to:
-
Easier and quicker on-boarding to Conversational Cloud
-
Having pre authentication messaging use cases, for example, assistance with password recovery
-
The ability to use Campaigns while having unauthenticated conversations
Quick replies
Type: Consumer Experience Feature
Available to all customers? Yes.
Quick Replies enrich the consumer experience by using rich text interactions that guide the consumer throughout the conversation. The consumer is presented with a number of brief answers that can be selected in order to navigate the conversation in the right path.
The Quick Replies can contain the same actions as Structured Content buttons:
- Publish text
- Link
- Navigation
As Quick Replies contain predefined values, the feature can dramatically improvie communication with Bots and improve both consumer experience and operational efficiency.
Structured content carousel
Type: Consumer Experience Feature
Available to all customers? Yes.
Structured Content experience is enriched with the Carousel allowing more capabilities, more use cases and moving agents one step forward in being able to provide end to end assistance.
The Carousel consists of more than one card at a time, side by side and the consumer can swipe between cards.
Experience and branding enhancements
Type: Consumer Experience Feature
Available to all customers? Yes.
The SDK allows Brands to customize the SDK even more, giving a personal touch to their cusomers.
Large emojis
When using Emojis in a conversation:
-
One Emoji: the Emoji will be enlarged to an extra large size.
-
Two Emojis: the Emojis will be enlarged to a Large size.
-
More than two Emojis or Emojis with text: the Emojis' size will be small.
Conversation window background image
A new way for Brands to set their own background in conversations to add a more personal touch.
APIs
New APIs
API | Description |
---|---|
LPMonitoringIdentity — added new object to be used as a param in the LPMonitoringAPI. | The object replaced consumerId which is now deprecated. |
func getEngagement(identities: [LPMonitoringIdentity], monitoringParams: LPMonitoringParams?, completion: @escaping (_ response: LPGetEngagementResponse)->(), failure: @escaping (_error: NSError)->()) | Use this API to get an engagement for a consumer in an appInstallationId context. The returned value is based on the provided Engagement Attributes. As an optional parameter, you can pass SDE Data which includes Entry Points or any other Engagement Attributes for routing the Parameters:
- identities: an array of identity objects of type LPMonitoringIdentity which includes the details on the consumer and issuer - 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(identities: [LPMonitoringIdentity], monitoringParams: LPMonitoringParams, completion: @escaping (_ response: LPSendSDEResponse)->(),failure: @escaping (_ error: NSError)->()) | Use this API to report Engagement Attributes for a consumer in an appInstallationId context including show and accept impression. Parameters:
- identities: an array of identity objects of type LPMonitoringIdentity which includes the details on the consumer and issuer - monitoringParams: an instance of LPMonitoringParams includes optional Array of Entry Points and an optional dictionary of Engagement Attributes. Additional optional parameter is PageID which is used for Page identification for sending events on the current engagement. PageID will be received in LPSendSDEResponse and in LPGetEngagementResponse - completion: completion block with response of type LPSendSDEResponse. This response includes sessionID and visitorID and pageID for future use. - failure: failure block with an error in case the request fails |
LPAuthenticationType — a new enum. Was added to LPAuthenticationParams | This enum is used for determine the authentication type with the following options:
- signup (default) // old unauthenticated method. Is deprecated as of July 2019 - unauthenticated - authenticated |
registerPushNotifications → Added new optional parameter authenticationParams: func registerPushNotifications(token: Data, notificationDelegate: LPMessagingSDKNotificationDelegate? = nil, alternateBundleID: String? = nil, authenticationParams: LPAuthenticationParams? = nil) | If passing authentication params, this method will register immediately to LPPusher, the registration will be performed when calling showConversation |
Deprecated APIs
API |
---|
func addContentToMessage(text: String) from LPMessagingSDK |
func getEngagement(consumerID: String?, monitoringParams: LPMonitoringParams?, completion: @escaping (_ response: LPGetEngagementResponse)->(), failure: @escaping (_ error: NSError)->()) |
func sendSDE(consumerID: String, monitoringParams: LPMonitoringParams, completion: @escaping (_ response: LPSendSDEResponse)->(), failure: @escaping (_ error: NSError)->()) |
Callbacks
New Callbacks
API | Description |
---|---|
LPMessagingSDKUnauthenticatedUserExpired() | Called when an unauthenticated user expired and can no longer be in use. When this callback is invoked, the previous open conversation will be closed locally. |
LPMessagingSDKPushRegistrationDidFinish() | Called when the SDK registration for LP Pusher service has been succeeded. Pusher is the service that responsible for Remote Push Notifications routing and delivering from and to APNS. |
LPMessagingSDKPushRegistrationDidFail(_ error: NSError) | Called when the SDK registration for LP Pusher service has failed with error. Pusher is the service that responsible for Remote Push Notifications routing and delivering from and to APNS. |
Configurations
General configurations:
Parameter | Description | Default Value |
---|---|---|
ttrShouldShow | Toggling this on will show TTR notifications. When the auto messages feature is enabled, TTR notifications will not be displayed regardless of this parameter. | true |
announceAgentTyping | This configuration already existed. If true, show agent is typing indicator in selected position and accessibility will announce when agent is typing a message to the consumer. If false, will not show any indication, and will not announce when agent is typing a message. | true |
showAgentTypingInMessageBubble | If true, shows agent is typing indicator in a message bubble. If false, show indicator under Agent label in navigator bar. If announceAgentTyping is false, will not show any "is typing" indicator regardless of current value | true |
Experience and branding enhancements
Parameter | Description | Default Value |
---|---|---|
enableEnlargeEmojis | When true, user and remote user messages containing one or two emojis will be enlarged in chat. Messages with one emoji will be the largest, two emojis will be large, and 3 or more will be displayed as normal text. | false |
conversationBackgroundPortraitImage | When not nil, will be used as the conversation portrait background image. | nil |
conversationBackgroundLandscapeImage | When not nil, will be used as the conversation landscape background image | nil |
conversationBackgroundImageContentMode | Defines the content mode of the conversation background image. | .scaleToFill |
Structured Content
Parameter | Description | Default Value |
---|---|---|
structuredContentBubbleTopLeftCornerRadius | Sets the corner radius of the top left corner of a Structured Content card | 8 |
structuredContentBubbleTopRightCornerRadius | Sets the corner radius of the top right corner of a Structured Content card | 8 |
structuredContentBubbleBottomLeftCornerRadius | Sets the corner radius of the bottom left corner of a Structured Content card | 8 |
structuredContentBubbleBottomRightCornerRadius | Sets the corner radius of the bottom right corner of a Structured Content card | 8 |
Audio messaging
Parameter | Description | Default Value |
---|---|---|
recordingDurationLimit: TimeInterval | Maximum time frame for recording audio message (in seconds). | 120 |
enableAudioSharing | True — Enables Audio Sharing feature, False — Disables Audio Sharing | false |
maxNumberOfSavedAudioFilesOnDisk | This number represents how many audio files will be saved on the disk. Exceeding files are deleted when the app closes. | 20 |
Quick replies
Parameter | Description | Default Value |
---|---|---|
quickReplyButtonVerticalPadding | Distance between the bottom and top edges of the button to the bottom and top edges of the text | 10.0 |
quickReplyButtonHorizontalPadding | Distance between the right and left edges of the button to the right and left edges of the text | 15.0 |
quickReplyVerticalMargin | Vertical margin between quick reply buttons | 10.0 |
quickReplyHorizontalMargin | Horizontal padding between quick reply buttons | 10.0 |
quickReplyButtonBorderWidth | Border size of Quick Reply buttons | 1.0 |
Updated configurations
Configuration | Description | Old Value | New Value |
---|---|---|---|
inputTextViewCornerRadius | User Input TextView corner radius | 17.0 | 20.0 |
Strings localization
General strings
Key | Description | Default Value |
---|---|---|
isTyping | Indication that appears while Agent is typing a new message. | "typing…" |
Quick replies
Key | Description | Default Value |
---|---|---|
quickReplyButton | Accessibility string when hovering on the Quick Replies control. | "Quick reply button" |
outOf | Accessibility string when hovering on the Quick Replies button | "out of" |
Unauthenticated messaging
Key | Description | Default Value |
---|---|---|
unauthenticatedUserExpiredTitle | The title of the presented dialog when the identity is expired. | New Conversation |
unauthenticatedUserExpiredMessage | The body of the presented dialog when the identity is expired. | "Hi there! As we haven't seen you for a while, we're opening a new conversation for you" |
Audio messaging
Key | Description | Default Value |
---|---|---|
toolTipLongTapToRecord | Tooltip shown when short tapping the mic button. | "Long tap to record" |
toolTipReleaseButtonForRecording | Tooltip shown when keeping mic tapped. | "Release for recording" |
toolTipRecordLimitReached | Tooltip shown when the maximum recording time reached. | “Recording limit has been reached, click to send” |
Features enablement chart
Feature | Backend update | Backend enablement | Backend configuration | SDK enablement | SDK configuration |
---|---|---|---|---|---|
Audio Messaging | Yes | Yes | Yes | Yes | Yes |
Unauthenticated Messaging | Yes | Yes | Yes | Yes | Yes |
Quick Replies | Yes | Yes | Yes | Yes | No |
Structured Content Carousel | Yes | Yes | Yes | Yes | No |
Branding Enhancements | No | No | No | Yes | Yes |
Version 3.1.5
iOS Messaging SDK
Version 3.1.5 supports Xcode 9.3 and Xcode 9.4.
Symptom
Control History APIs are not exposed to Objective C.
Fix
The Control History APIs are now exposed
Symptom
LPMessagingSDKCSATScoreSubmissionDidFinish delegate was called when getting history, even if the CSAT was already submitted.
Fix
LPMessagingSDKCSATScoreSubmissionDidFinish is now called only after the CSAT is submitted.
Version 3.1.4
iOS Messaging SDK
- Version 3.1.0.24 — Supports Xcode 9.2
- Version 3.1.4 — Supports Xcode 9.3
Symptom
In some cases where two consumers use the same device (one after the other), push notifications directed to the first consumer were routed to the device although a different consumer was using it.
Fix
Before registering a new consumer for push notification, we make sure the previous consumer was unregistered.
Symptom
In some cases, when using older iOS versions (~iOS 9) and older devices, and fetching additional history, the UI of the conversation screen breaks and from time to time, the app might crash as well.
Fix
The UI will maintain its structure after fetching additional history and prevent a possible crash.
Symptom
After a brand calls to Clear History, the conversation is removed from the UI but when the consumer navigates back to the screen the history is presented again.
Fix
History will not be presented after calling Clear History.
Symptom
In some cases, when the SDK is trying to connect to LivePerson’s servers, there is no indication for the consumer.
Fix
An indication will be presented while the SDK attempts to connect to the server.
Version 3.1.3
iOS Messaging SDK
- Version 3.1.0.23 — Supports Xcode 9.2
- Version 3.1.3 — Supports Xcode 9.3
The version contains the following bug fixes:
Symptom
When a consumer scrolls inside the conversation window, returns to the app and then back to the conversation, their position inside the screen is not saved, and they need to navigate back to their previous position.
Fix
The consumer’s position within the conversation window is saved. When the consumer returns to the conversation, they will return to the same place they were when they navigated away from the screen.
Symptom
In some cases, when fetching additional history, the UI of the conversation screen breaks.
Fix
The UI will maintain its structure after fetching additional history.
Symptom
When a consumer starts a conversation and leaves the messaging screen while moving the app to background, then returns to the messaging screen after the JWT has expired, they will not be able to continue the conversation and sending messages will be disabled.
Fix
The JWT expiration is now verified before each socket connection. If it expires, a callback of tokenExpired will be invoked.
Symptom
When calling the API of removeConversation() from viewWillDisappear() when the conversation has been resolved, the socket will be closed while the CSAT is being presented to the consumer. As a result, the CSAT submit button is disabled.
Fix
The socket will not be closed while the CSAT is being presented.
Version 3.1.2
iOS Messaging SDK
- Version 3.1.0.22 — Supports Xcode 9.2
- Version 3.1.2 — Supports Xcode 9.3
The version contains the following bug fixes:
Symptom
Consumer is typing indication appears to the agent when the keyboard is opened and not when the consumer actually starts typing.
Fix
Consumer is typing view will be presented to agent on a keystroke.
Symptom
When a consumer scrolls inside the conversation window, goes back to the app and back to the conversation, the position inside the screen will not be saved.
Fix
The position inside the screen is saved. When the consumer will go back to the conversation, the position will be the same as it was when leaving the screen.
Symptom
The agent’s first name appears in the in app notification instead of the nickname.
Fix
Added the nickname of the agent instead of the first name.
Version 3.1.1
iOS Messaging SDK
Added support for Xcode 9.3 and Swift 4.1.
Version 3.1.0
iOS Messaging SDK
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
Please note the documentation on version-specific system requirements (PDF).
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 Conversational Cloud boosts agent efficiency and enables more accurate reporting.
Using the Monitoring APIs, brands can:
-
Report on the customer’s journey inside the app
-
Get engagements based on the reported SDEs
-
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:
|
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:
|
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.
Version 3.0.0
iOS Messaging SDK
New functionalities
Certificate pinning
Type: Security Feature
Available to all customers? No. Contact support for more details.
Certificate Pinning allows increased security on top of the commonly used SSL protocol for mobile apps. It assists to prevent certificate hijacks and mitigates implications from compromised certificate authorities. By using Certificate Pinning, apps have an additional validation of the server’s certificate.
The object certPinningPublicKeys was added to the object LPAuthenticationParams. Please note: using the new object without completing the onborading process will result in failures while trying to communicate with LivePerson’s servers.
The following additional conditions and configurations are required:
Backend update | Backend enablement | Backend configuration | SDK enablement | SDK configuration |
---|---|---|---|---|
Yes | Yes | Yes | Yes | Yes |
Xcode 9.2 and Swift 4.0.2 support
Type: Developer Experience Feature
Available to all customers? Yes
The Mobile App Messaging SDK v3.0 was built and certified with Xcode 9.2 in Swift 4.0.2 and also supports Xcode 9.1.
List of certified and supported devices extended
The following devices are now also supported and/or certified to host our Mobile App Messaging SDK:
Operating system | ||||
---|---|---|---|---|
Model | iOS 9.x | iOS 10.x | iOS 11.x | |
iPhone 8 | N/A | N/A | Certified | |
iPhone 8+ | N/A | N/A | Certified | |
iPhone X | N/A | N/A | Certified |
A full list of supported and certified devices can be found in the Conversational Cloud System Requirements document.
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.
Version 2.9.4
iOS Messaging SDK
Version 2.9.4 planned roll-out: December 21th 2017
Fixed issue
Symptom
For iOS 11, the app might crash when closing the conversation screen while receiving new messages.
Fix
Improved memory allocation for conversation screen
Xcode 9.2 and Swift 4.0.2 Support
Type: Developer Experience Feature
Version 2.9.3
iOS Messaging SDK
Version 2.9.3 planned roll-out: November 29th 2017
Please note the documentation on version-specific system requirements (PDF).
These are the main feature releases available in the Mobile App Messaging SDK version 2.9 for iOS.
Accessibility updates
Bug: Structured content focus for new messages
Symptom
When consumer has opened the conversation screen, connectivity bar shows there is no connection and there is no connectivity to the messaging service. This symptom will occur in the following case:
Brands which implement UIDevice Extension with "var modelName: String" that returns device name string containing white spaces.
Fix
SDK will now trim the whitespace of the device modelName and connectivity will work as expected.
Bug: Structured content image resolution
Symptom
UI overlaps of timestamp label over the message when sending a Link Preview message, while setting "bubbleTimestampTopPadding" with a value.
Fix
Overlap will no longer occur due to backend fixes.
Version 2.9.0
iOS Messaging SDK
Version 2.9 planned roll-out: November 12th 2017
Please note the documentation on version-specific system requirements (PDF).
These are the main feature releases available in the Mobile App Messaging SDK version 2.9 for iOS.
New functionalities
Xcode 9.1 and Swift 4.0.2 Support
Type: Developer Experience Feature
Available to all customers? Yes
The Mobile App Messaging SDK v2.9 was built and certified with Xcode 9.1 in Swift 4.0.2.
Customers wishing to use the Mobile App Messaging SDK v2.9 must upgrade their Xcode to 9.1 and their Swift version to 4.0.2.
iPhone X Device Support
Type: Device Support Feature
Available to all customers? Yes
The Mobile App Messaging SDK v2.9 is now supported on the iPhone X.
New parameters
Branding and configuration parameters
Type: Parameters
Available to all customers? Yes
The Mobile App Messaging SDK v2.9 exposes additional branding configuration parameters.
New parameters may control text, padding of conversation UI elements and more.
Parameter name and default value | Description | Image |
---|---|---|
customFontNameDateSeparator: String? | Custom font for Timestamp. Fonts that are not part of the iOS families must be defined in the App's Info.plist. | |
dateSeparatorFontSize : UIFontTextStyle = .footnote | Defines the Date Separator font text style. | |
dateSeparatorTopPadding: Float = 0.0 | Defines the Date Separator top spacing. | |
dateSeparatorBottomPadding: Float = 0.0 | Defines the Date Separator bottom spacing. | |
remoteUserAvatarLeadingPadding: Float = 8.0 | Defines the remote avatar leading spacing (from the left edge to the avatar). | |
remoteUserAvatarTrailingPadding: Float = 8.0 | Defines the remote avatar Trailing spacing (from the avatar to the bubble). | |
bubbleTopPadding: Float = 10.0 | Defines the bubble top spacing. | |
bubbleBottomPadding: Float = 10.0 | Defines the bubble bottom spacing. | |
bubbleLeadingPadding: Float = 10.0 | Defines the bubble leading spacing. | |
bubbleTrailingPadding: Float = 10.0 | Defines the bubble trailing spacing. | |
inputTextViewTopBorderColor: UIColor = UIColor.clear | Input TextView top border color. The default color is clear. | |
conversationSeparatorFontSize: UIFontTextStyle = .caption1 | Defines the Conversation Closed separator font size. | |
conversationSeparatorFontName: String? | Custom font name for Conversation Closed separator. Fonts that are not part of the iOS families must be defined in App's Info.plist. | |
conversationSeparatorTopPadding: Float = 5.0 | Defines the Conversation Closed Separator Top spacing. | |
conversationSeparatorBottomPadding: Float = 7.0 | Defines the Conversation Closed label to separator line spacing. | |
conversationSeparatorViewBottomPadding: Float = 7.0 | Defines the conversation separator view bottom spacing. | |
customRefreshControllerImagesArray:Array<UIImage>? = nil | Array of images for creating the custom refresh controller. The controller will loop the images; two or more images are required for the array to take effect. | |
customRefreshControllerAnimationSpeed:Float = 2 | Custom refresh controller speed animation; defines the full images loop time. A smaller value will create a higher speed animation. | |
bubbleTimestampTopPadding: Float = 2.0 | Defines the bubble Timestamp top spacing. | |
bubbleTimestampBottomPadding: Float = 5.0 | Defines the bubble Timestamp bottom spacing. |
Version 2.8.0
iOS Messaging SDK
Version 2.8 planned roll-out: September 27th 2017
Please note the documentation on version-specific system requirements (PDF).
These are the main feature releases available in the Mobile App Messaging SDK version 2.8 for iOS.
Structured content enablement (GA in SDK)
Type: Feature
Available to all customers? No — early adopters only.
The beta version was released in v2.7 (for a full description, refer to the v2.7 release notes). The SDK delivers structured content enablement only; the feature will be made fully productive in October. In v2.8 the feature is enabled by default in the SDK.
The dictionary of template elements can be found here.
What does enablement mean?
Until rollout is complete, the structured content capability in SDK v2.7 was flagged as a Beta feature. The feature has an enablement toggle in the SDK which was disabled by default.
In SDK v2.8, it is enabled by default.
The toggle may be switched on or off as part of the SDK implementation 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.
InApp Messaging SDK toggle
- iOS — enableStructuredContent
Related properties: Structured content
The following additional conditions and configurations are required:
Backend update | Backend enablement | Backend configuration | SDK enablement | SDK configuration |
---|---|---|---|---|
Yes | Yes | Yes | Yes | Yes |
Automatic messages for messaging
Type: Feature
Available to all customers? No — early adopters only
Description
Automatic Messages (AKA System Messages) are predefined messages about events that occur in the conversation and are sent to the consumer as the events occur. Their purpose is to gain the consumer’s trust in the messaging channel, by setting expectations and giving the consumer visibility over the agent’s availability.
Auto messages are triggered upon specific events that are detected by the system (e.g. the consumer opens a new conversation, the conversation is transferred to another agent, the time to respond is updated, etc.). When the auto messages are sent, they are displayed to the consumer and the agent within the conversation transcript, and they also appear in the conversation’s history both on the consumer’s side and in LE.
Notes
-
Messages are supported in all Conversational Cloud languages.
-
The content of each message can be edited by the brand.
-
Skill variation is supported, including enabling/disabling the messages for each skill.
-
Certain messages can have different parameters, such as the time the conversation is in the queue before the message is sent.
-
Dynamic text can be added to the messages, which will be replaced with a runtime value, such as agent name.
-
Auto messages do not affect whom the conversation is pending, nor the time to respond.
-
They are filtered out of the reports by default (unless manually included).
The following auto messages are supported:
-
New conversations
-
A consumer opens a conversation during working hours
-
A consumer opens a conversation for the first time ever, during working hours
-
-
Off hours
-
A consumer opens a conversation during off hours
-
A consumer opens a conversation for the first time ever, during off hours
-
The consumer sends the first message during off hours in an open conversation
-
-
Time to respond
-
The response time is updated manually by the agent
-
The consumer marks the conversation as urgent
-
The consumer dismisses the conversation’s urgent state
-
-
Consumer/Agent non-responsive
-
The consumer has not responded for X seconds/minutes/hours
-
The agent did not respond for X seconds/minutes/hours
-
Conversation is in queue for X mins/hours
-
-
Transfers and connection to agents
-
The conversation is transferred to a different skill
-
The agent returns the conversation to the queue
-
The consumer is connected to an agent
-
-
Conversation participants
-
The agent manager joins the conversation
-
The joined agent manager leaves the conversation
-
How to enable auto messages
Auto messages will be enabled for early adopters upon release. Please contact your account manager for more information.
Notes
When auto messages are enabled, they are all enabled by default and all have the default text. It is advised to review them immediately and modify them to suit the brand’s needs.
Once auto messages are enabled, the SDK does not show toast messages which were presented in the past.
The following messages remain in the SDK :
-
Introduction message from the consumer’s first ever conversation. Make sure you do not have a collision between that message and auto messages.
-
Conversation resolved message
The following additional conditions and configurations are required:
Backend update | Backend enablement | Backend configuration | SDK enablement | SDK configuration |
---|---|---|---|---|
Yes | Yes | Yes | Yes | Yes |
Unread messages badge
When there are unread messages waiting for the consumer within the brand app, this information can be pushed to display in the app’s notification badge. Within the app, brands can develop their own visualization of a badge, such as a number, icon or other marker to show unread messages.
The unread messages number is passed to the SDK through LP Push service with every push.
Notes
A push is sent to the last device which was registered to the LP push service, meaning that the unread messages indication can be fetched by only one device.
-
If the user is using two devices in parallel, the device that does not receive push events will receive updates of the unread message indicator only once that a message has been sent from that device and the push arrives to it.
-
In addition, if a conversation is ongoing in web messaging, then the push will not arrive to the device, since the web-socket is already open.
Getting the unread message badge counter
This API method uses a threshold mechanism of 10 seconds from the last time the badge retrieved from the server. If calling this method within less than 10 seconds, the counter will be returned from cache otherwise, it will be fetched again with new data.
Parameters
-
conversationQuery: conversationQuery: used to identify the related brand
-
completion: called once the operation ends successfully
-
failure: called once the operation failed
Related properties: Unread messages badge
Related API: Unread messages badge API
The following additional conditions and configurations are required*:
Backend update | Backend enablement | Backend configuration | SDK enablement | SDK configuration |
---|---|---|---|---|
Yes | No | No | No | Yes |
Set icon for "Send" button
Brands are now able to choose and configure their own icon for the "Send" button for Mobile App Messaging conversations.
How to configure the send button icon
-
Ensure the SDK is set to use an icon and not text for the Send button (isSendMessageButtonInTextMode = false)
-
Set the icon — sendButtonImage: UIImage
Notes
The chosen icon must adhere to Apple’s guidelines for custom icons.
Related properties: Send button
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 |
iOS11, Xcode 9 and Swift 4/Swift 3.2 Certification, and removal of iOS8 from supported list
The Mobile App Messaging SDK v.28 was built and certified with Xcode 9 in Swift 4/ Swift 3.2 for iOS11.
The following devices were certified with iOS11:
- iPhone 6
- iPhone 7
With this new certification, support for iOS8 was removed.
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 |
Customizable bubble corners
The radius of the corners of message bubbles can now be configured by the brand. There are 8 different parameters to be configured: the 4 corners of the agent message bubble and the 4 corners of the consumer message bubble.
The corners of the scroll button may also be set.
Related properties: Bubble corners
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 |
Reconnect attempt termination callback
The new callback will be invoked when all connection retries have failed:
Related callback: Reconnect attempt termination callback
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 |
Logout — add completion closure/failure
This method is a destructive method that is typically used to clean a user’s data before a second user logs into the same device or simply to log the current user out.
The method carried out the following steps:
-
Unregisters from the push notification service.
-
Clears all SDK persistent data.
-
Cleans running operations (see destruct).
-
Invokes destruct() method
Parameters:
-
completion: a completion block for successful logout. The completion block will be invoked only if all logout steps succeeded.
-
failure: a failure block with a specified error for logout failure. The failure block will be invoked if at least one of the logout steps has failed.
Related API: Logout API
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 |
New event — conversation interactions
The conversation interactions event communicates the Inactive time interval within seconds of the user last touching the screen. This interval applies to the scroll/messaging/action menus and any other general action on the conversation screen.
Note: If the screen is not active or the application is running in the background, the API will return -1.
Reset events:
- send message
- text edit change
- scroll
- viewDidAppear
- appWillEnterForeground
- tap
- long press
- WindowContainerViewController
- menuButtonClicked
- WindowContainerViewController
- customButtonClicked
Clear events:
- viewDidDisappear
- appWillEnterBackground
Related API: Conversation interactions API
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 |
Keys for items
- 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 |
---|---|---|
enableStrucutredContent: Bool | Enable or Disable toggle for Structured Content feature in conversations. | true |
Bubble corners
The following properties for customizable bubble corners can now be configured:
Name | Description | Default |
---|---|---|
userBubbleTopLeftCornerRadius:Float = 8 | Top left radius corner on the user bubble. Note (applies to all bubble corner properties): Setting the radius to a value greater than 0.0 causes the bubble's layer to begin drawing rounded corners on its background. This attribute affects the bubble's masking and it is recommended to use a corner radius which at maximum equals to half of the bubble's height. Setting a corner radius larger than half of the bubble's height will cause the text to cut visually. | 8 |
userBubbleTopRightCornerRadius:Float = 8 | Top right radius corner on the user bubble | 8 |
userBubbleBottomLeftCornerRadius:Float = 8 | Bottom left radius corner on the user bubble | 8 |
userBubbleBottomRightCornerRadius:Float = 0 | Bottom right radius corner on the user bubble | 0 |
remoteUserBubbleTopLeftCornerRadius:Float = 8 | Top left radius corner on the remote bubble | 8 |
remoteUserBubbleTopRightCornerRadius:Float = 8 | Top right radius corner on the remote bubble | 8 |
remoteUserBubbleBottomLeftCornerRadius:Float = 0 | Bottom left radius corner on the remote bubble | 0 |
remoteUserBubbleBottomRightCornerRadius:Float = 8 | Bottom right radius corner on the remote bubble | 8 |
Unread messages badge
The following properties for the unread messages badge can be configured:
Name | Description | Default |
---|---|---|
unreadMessagesCornersRadius:Float = 8 | Sets the corner radius of the unread messages cell | 8 |
Scroll to bottom button
The following properties for the scroll to bottom button can now be configured:
Name | Description | Default |
---|---|---|
scrollToBottomButtonCornerRadius:Float = 20 | Sets the top left and bottom left radius of the scroll to bottom button | 20 |
scrollToBottomButtonBadgeCornerRadius:Float = 12 | Sets the radius of the scroll to bottom badge corners | 12 |
Send button
The following properties for the send button can now be configured:
Name | Description | Default |
---|---|---|
sendButtonImage: UIImage | Custom send button image in the conversation screen | Arrow icon |
Controller bubble
The following properties for the controller bubble can now be configured:
Name | Description | Default |
---|---|---|
controllerBubbleTextColor : UIColor | Color code for the text of the controller bubble | UI color |
New APIs
Conversation Interactions API
func getInactiveUserInteractionTimeInterval(_conversationQuery: ConversationParamProtocol) -> TimeInterval
Returns: Inactive TimeInterval (Double)
Unread Messages Badge API
func getUnreadMessagesCount(_conversationQuery: ConversationParamProtocol, completion: @escaping (_ badgeCounter: Int)->(), failure: @escaping (_ error:NSError)→())
Logout API
func logout(completion: @escaping ()->(), failure: @escaping (_ error: Error)→())
New Callbacks
Reconnect attempt termination callback
func LPMessagingSDKConnectionRetriesFailed(_error: NSError)
Version 2.7.0
iOS Messaging SDK
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
Please note the documentation on version-specific system requirements (PDF).
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 the 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.
Related properties: Structured content
Related strings: Structured content
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 Conversational Cloud 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 Conversational Cloud service
- Continuing attempt to connect to Conversational Cloud service
- Retry
Related properties: Connectivity status bar
Related strings: Connectivity status bar
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.
Related properties: Secure form branding enhancements
The following additional conditions and configurations are required*:
- Secure forms should be configured and set on LE
- 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.
Related properties: Message selection branding
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.
Related properties: View-only mode
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.
Related properties: Photo sharing permissions callback
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.
func 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";
Version 2.5.0
iOS Messaging SDK
These are the main feature releases available in the Mobile App Messaging SDK version 2.5 for iOS.
Version 2.5 roll-out: July 2nd 2017
Please note the documentation on version-specific system requirements (PDF).
New functionalities
Custom fonts
in order for consumers to enjoy the full brand experience while messaging in-app, brands are able to configure certified operating system fonts to appear in the messaging window. The fonts can be used across all elements, or only for the font within the message bubble.
The SDK also supports the use of a brand’s own customized fonts (although these are not certified).
Custom fonts are not supported for Native iOS properties such as:
-
Activity mode — Overflow menu
-
Popup messages
Related properties: custom fonts
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 |
Tablet supportability
To ensure that consumers using tablets can connect with brands while enjoying the tablet experience, Mobile App Messaging is now supported on these devices, in window mode and activity mode, and in both portrait and landscape layouts.
All supported devices have gone through automation tests and all certified devices have gone through both automation and manual testing.
Device | iOS 8.x | iOS 9.x | iOS 10.x |
---|---|---|---|
iPad 5 (2017) | N/A | N/A | Certified |
A full list of supported and certified devices can be found in the Conversational Cloud System Requirements document.
Connectivity improvements
The user experience when connecting to the app has been significantly improved. When users first log-in, and during all subsequent attempts, the login process is now much smoother and faster.
In addition, other aspects such as feature and conversation history will also be more rapid as a result of the improvements.
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 |
Default agent avatar
The SDK now offers brands a way to use a default agent avatar of their own.
Related properties: User avatar
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.
Photo sharing button colors
Brands now have the ability to set camera button colors in addition to the Send button colors.
Related properties: Photo sharing
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 |
New properties
The following properties of the secure form bubble on the agent side can now be configured:
Custom Fonts
Name | Description | Example | Default |
---|---|---|---|
customFontNameConversationFeed: String? = nil | The font name for all elements of the conversation feed. | Empty (use the device font) | |
customFontNameNonConversationFeed: String? = nil | The font name for all elements that are not in the conversation feed. | Empty (use the device font) |
Photo sharing
To configure the Camera's button colors:
Name | Description | Example | Default |
---|---|---|---|
cameraButtonEnabledColor | The camera button color when in enabled mode in the conversation screen. The button will be presented only if the photo sharing feature is enabled. | #0362AC | |
cameraButtonDisabledColor | The camera button color when in disabled mode in the conversation screen. The button will be presented only if the photo sharing feature is enabled. | #8B8A8F |
User avatar
| Name | Description | Default | | — | — | — | | remoteUserDefaultAvatarImage | The default avatar image of the remote user. When assigned, this image will disable remoteUserAvatarBackgroundColor and remoteUserAvatarIconColor configurations. If the remote user has an avatar image in his profile, this attribute will be ignored. | nil |
Version 2.3.1
iOS Messaging SDK
Mobile App Messaging SDK v2.3.1 for iOS contains the following bug fix:
Symptom
For one minute after the consumer had navigated away from the conversation window, any arriving messages would not display. They would only appear in the conversation window after the minute had passed.
Fix
The following capability which was first introduced in v2.3 has been disabled to avoid this bug: “Presence enablement for photo sharing — beta*”.
Version 2.3.0
iOS Messaging SDK
Please note the documentation on version-specific system requirements (PDF).
These are the main feature releases available in the Mobile App Messaging SDK version 2.3 for iOS.
iOS developer enhancements
The Conversational Cloud in-app SDK is fully compatible with the most recent versions of Apple’s developer tools, Xcode 8.3 and Swift 3.1.
The SDK is also compatible with CocoaPods, a dependency manager for Swift and Objective-C Cocoa projects. CocoaPods has thousands of libraries and is used in over 2 million apps. It can help you scale your projects elegantly and provides a standard format for managing external libraries.
Sample Apps are now using CocoaPods.
CocoaPods Installation
-
Install CocoaPods using the following command:
$ gem install cocoapods
-
Navigate to your project folder and init new pod using the following command:
$ pod init
-
Podfile should be created under your project’s folder.
To integrate the LivePerson Messaging SDK into your Xcode project using CocoaPods, specify it in your Podfile:
source 'https://github.com/LivePersonInc/iOSPodSpecs.git' platform :ios, '8.0' use_frameworks!
target '' do pod 'LPMessagingSDK' end -
Run the following command in the terminal under your project folder:
$ pod install
-
In project settings, navigate to the Build Phases tab, and click the + button to add a New Run Script Phase. Add the script below in order to loop through the frameworks embedded in the application and remove unused architectures (used for the simulator). This step is a workaround for the known iOS issue and is necessary for archiving your app before publishing it to the App Store.
bash "${SRCROOT}/Pods/LPMessagingSDK/LPMessagingSDK/LPInfra.framework/frameworks-strip.sh"
Secure form for Mobile App Messaging
The secure form gives consumers the confidence to submit sensitive information, such as credit card data and social security numbers, while messaging in-app. The form also enables agents to safely carry out secure processes, such as payment, identification and authorisations.
The form can be tailored to match the Mobile App Messaging experience and has a time-out expiry, for added security.
This feature requires consulting services support. For more information, please refer to the Conversational Cloud secure form for messaging documentation.
Related properties: Agent PCI bubble Related strings: PCI
List of certified and supported devices extended
The following devices are now also supported and/or certified to host our Mobile App Messaging SDK:
iPhone
Operating system | ||
---|---|---|
Device | iOS 9.x | iOS 10.x |
iPhone SE | Supported | Supported |
iPad
Operating system | |||
---|---|---|---|
Device | iOS 8.x | iOS 9.x | iOS 10.x |
Air 2 (2014) | Supported | Supported | Supported |
Mini 4 (2015) | N/A | Supported | Supported |
iPad Pro (2016) | N/A | Supported | Supported |
iPad 5 (2017) | N/A | N/A | Supported |
Presence enablement for photo sharing — beta
Presence enablement for photo sharing provides consumers with the ability to receive notifications while uploading a photo, whether they remain within the app or keep it running in the background.
The Web Socket remains open for a maximum of 60 seconds (using Background Task) when the app or conversation window moves to the background. This scenario is also applicable for non photo sharing flows.
Photo sharing is a beta feature.
Version 2.0
iOS Messaging SDK
Please note the documentation on version-specific system requirements (PDF).
These are the main feature releases available in the Mobile App Messaging SDK version 2.0.
Photo sharing for iOS and Android (Beta)
Consumers can now add photos directly into a messaging conversation, enabling them to describe an item and share it with their agent. Photo sharing supports multiple image sizes, and all shared images are logged in All Conversations. This feature is available for Facebook messenger, web messaging, and Mobile App Messaging, on both Android and iOS.
Accessibility for messaging
The Mobile App Messaging SDK now supports accessibility WCAG Level A and Level AA and CATO.
Configure regular expressions to create hyperlinks in messages
Brands can now configure their own regular expressions to create hyperlinks which link directly to relevant pages or actions.
Expressions can be configured for the following commands:
- Call
- URL
In-conversation shortcut to new messages
A shortcut can now be configured to appear within the conversation when there are new messages available. This saves the consumer time when scrolling within messaging conversations. Clicking on the shortcut navigates the visitor straight to the new messages so they can quickly and easily continue the conversation.
Set icon for send button
Brands now have the ability to replace the Send button in a messaging conversation with a paper plane (Android) or arrow (iOS). This icon can be customized to match the brand’s colors.
Link preview within conversation
When sending a link within an Mobile App Messaging conversation, a preview of the link page will display within the thread, giving the consumer a useful overview of the link content.
Ability to remove resolved divider in thread
Brands are now able to configure the removal of the resolved divider within a thread. The divider usually appears underneath the system message noting that the conversation has been resolved. This creates the feel of one ongoing, undisrupted conversation for consumers using messaging.
Add callback to SDK for agent picture click
In order to provide brands with greater insight into consumer activity within the messaging window, Conversational Cloud will provide a callback when a consumer clicks on the agent’s picture in the conversation. The brand can then decide what action they would like to take, for example opening an agent profile or enlarging the picture.
Enhancement: Configure CSAT Timeout
Brands can now configure for how long a CSAT form will be displayed to the consumer after the messaging conversation is resolved by the agent. This applies to consumers who exit the conversation before it is resolved.
Brands can select from the following options:
-
The CSAT form never times out, and will be displayed to the consumer when they reopen the conversation regardless of the amount of time that has passed since the conversation was resolved.
-
The number of minutes from when the conversation was resolved to when the form will no longer be displayed.