Repository navigation
Release 6.23.0
Version 6.23.0
iOS Messaging SDK
Release Date: Jan 31, 2025
Environment requirements
The iOS Mobile Messaging SDK version 6.23.0 is supported on iOS versions 13 through 18.
This XCFramework was compiled with Swift version Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1), 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 an issue where SDK might crash when multiple threads access or modify the user’s dictionary simultaneously (not thread-safe).
-
Fixed an issue where the unread message count icon was partially truncated when the font size was set to "Extra Large".
-
Fixed an issue where accessibility (a11y) focus would shift randomly when the PCS quick-reply option was clicked. Now, the focus is directed to the sent message for a consistent user experience. If additional messages arrive, the focus remains on the sent message, and a11y will only announce the new message.
-
Fixed an issue where the ‘percentage’ attribute was not applied to Structured Content horizontal containers, ensuring percentages now apply consistently to both parent containers and leaf-level elements such as text, images, maps, and buttons.
-
Fixed several date picker accessibility issues, including:
- Dim/unclickable buttons not being announced.
- Buttons not being identified as clickable.
- The close button reading an incorrect caption.
- Month fields not being associated with chevrons, leaving users unaware of their function.
-
Fixed an issue where "secureFormBubbleFillFormButtonBackgroundColor" overlapped the loading indicator. Changing this background color to a solid color no longer blocks the loading indicator.
-
Fixed SDK local image storage mechanism by adding a hashed value to file paths to ensure uniqueness.
-
Fixed an issue where SDK was retrying file upload in offline messaging mode.
-
Fixed an issue where SDK was rendering a broken image icon incorrectly.
-
Fixed an issue where file messages would disappear or hang on the conversation screen if the JWT/code token expired during file upload. The fix adds failure callbacks triggered when the socket closes with an unrecoverable error code.
-
Fixed an issue where the push notification tapped delegate was not invoked when tapping the system push notification banner in the notification center and calling the handlePush method. The delegate method is now invoked in this scenario.
-
Fixed an issue where loading older message history would not display correctly after the first load. The swipe-to-load feature now consistently loads older messages in subsequent relaunches of the messaging window.
-
Fixed an issue with masking where local system messages (e.g., "Your personal data has been masked...") were shuffled and displayed above consumer masked messages after sending consumer messages.
-
Fixed an issue where the unread message banner was rendered multiple times in the structured content message cell. The update prevents multiple renderings of the unread message banner.
-
Fixed an issue where the offline messaging loader was animating too quickly on rotating the device, or tapping on retry banner to reconnect etc.
-
Fixed an issue where the inputTextViewMaxHeight configuration was not being applied correctly.
-
Fixed an issue where the microphone button for voice recording (enableAudioSharing) reappeared after dismissing and relaunching the messaging screen with text in the input area.
-
Fixed focus shift issues for VoiceOver by enhancing the cell reload mechanism for structured content and quick replies.
-
Fixed an issue where the endConversation callback was incorrectly invoked for newly logged-in users.
-
Fixed an issue where the File Sharing menu label texts did not resize according to system accessibility font size settings.
-
Fixed an issue where the unread message banner displayed a count lower than the actual number of unread messages. It happens when the conversation screen gets closed and messages arrive before the socket gets closed. It was showing the count for only the messages that came after the socket closed.
-
Fixed an issue in the unauthenticated flow where the masked hint text, "Your personal data has been masked to protect your security. Only the agent can read it." disappears, and masking is removed when the consumer backgrounds or foregrounds the app.
-
Fixed an issue for a reported crash case related to the enableSpeechRecognition feature.
-
Fixed an issue where the message timestamp did not update promptly when the app transitioned from background to foreground. The SDK now updates the message timestamp correctly upon foregrounding the app.
-
Fixed an issue where the SDK would crash if Korean language were selected. Related to key "structuredContentCellWithItemsMessage".
-
Fixed an issue where the SDK sent a redundant request to the pusher service when unregisterType was set to
.nonein the old logout method. Please use the new logout method instead. (This fix was introduced in the 6.22.1 release and is available in 6.23.0.) -
Fixed an issue where QuickReply options remained visible after being selected on another device, when both devices were displaying the messaging conversation screen.
-
Fixed an issue where the unread messages count sometimes did not reset when the pusherClearBadgeCount branding config was enabled.
Features
- Added support for rendering and responding to iDavid form.
- Introduced a branding configuration announceNewMessageContent to control VoiceOver behavior for new messages. When enabled (default behaviour), VoiceOver announces the content of new messages; otherwise, it announces only "New Message."
If true: Accessibility VoiceOver now consistently announces "New message + message content".
- Added support for rich-text features in the in-app SDK. This feature is currently available only for conversations initiated through the Web experience. The new parsing, formatting, and presentation of rich-text messages apply to bot agent messages, human agent messages, and automatic messages.
Enhancement
- Moved the "# of unread messages" from the "accessibilityLabel" to the "accessibilityHint" of the "Scroll to Bottom" button for improved accessibility clarity.
- Updated the default value of "accessibilityScrollToBottomButton" from "Scroll to Bottom" to "Go to Recent Message".
- Updated the default value of "accessibilityHintScrollToBottomButton" from "Scrolls the user to newest messages." to "Scroll to Most Recent Message".
- When launching the conversation screen with VoiceOver accessibility enabled, the initial focus will be set to "x unread messages". If no "x unread messages" are found, it will focus on the latest message of the conversation.
- Hide the vertical scroll bar when VoiceOver accessibility is enabled to improve screen navigation for accessibility users.
- SDK's accessibility (VoiceOver) will ignore structured content with a Text type if both text and tooltip are empty. These elements will not be included in the accessibilityElements.
example:
{
"type": "text",
"text": "",
"tooltip": ""
}
- Improved socket error handling to ensure messages are sent to the latest dialog.
- Enhanced the in-app SDK with custom actions to enable activation of individual links within messages containing multiple links.
- Deprecated Datepicker LPConfig datePickerFooterButtonText. Use LPLanguagesKeys.confirm instead.
- Introduced the notificationType: LPNotificationType property on the LPNotification object to detect the type of push notification, such as regular, proactive, or c2m. Additionally, the following variables of ProactiveNotificationData have been made public:
lookBackPeriod,
agentPid,
backendService,
externalConsumerId
-
Return the LPNotification object immediately from the handlePush(:) function to enable brands to consume it and make decisions more quickly, rather than receiving the object asynchronously through the delegate method. Mark the existing LPMessagingSDKNotification(didReceivePushNotification notification: LPNotification) delegate method as deprecated.
-
Added localizations key for date picker accessibility:
"accessibilityFromDate" = "From Date"; "accessibilityToDate" = "To Date"; "accessibilityMonthYearPicker" = "Month year Picker"; "accessibilityCalendarSelection" = "Calendar Selection"; "accessibilityConfirmation" = "Confirmation";