- [Chat] The welcome message is now always the first message of the current day.
- [Source] Cleaned up MessagesManager for consistency and converted to Kotlin.
- [Device] Sending device to backend now also sends the library version and OS type (Android).
- [Chat] Fixed a case where the very first frame would show the being offline message even while the user is online.
- [Compose] The keyboard now has the
sendime action and handles this accordingly. - [Media] Fixed image not being shown initially after the successfully uploading it when using clientApi v1.9.
- [Chat] Fixed an image-only message having the meta shadow not rounded properly.
- [Source] IMPORTANT: Parley now enforces SSL pinning automatically. When using a custom
network_security_config.xml, it's now needed to usetools:replace="android:networkSecurityConfig"in theAndroidManifest.xml. - [Source] IMPORTANT: ParleyNetwork has the
securityConfigResourceFileparameter removed as this is not needed anymore. - [Source] IMPORTANT: Minimum SDK updated to API 24 (Android 7).
- [Source] IMPORTANT: Target SDK updated to API 35 (Android 15).
- [Source] Updated the way network calls are done under-the-hood.
- [Source] Added support for clientApi 1.8 and 1.9 (latest).
- [Chat] Now marking agent messages as read when they are rendered.
- [Chat] Added
Parley.getUnseenCount(ParleyDataCallback<Integer> callback)to retrieve the amount of unseen messages when using clientApi 1.9. - [Dependency] TrustKit is now not needed anymore and has been removed.
- [Lightweight Configure] Added
setup()method to setup Parley, but not configure it yet. - [Lightweight Configure] Added
registerDevice()method to setup Parley, so that the current device can be registered even whenconfigure()has not been called earlier. - [Lightweight Configure] It remains still required to call the
configure()method when the chat needs to be shown. - [Example] The example project has been updated to Kotlin and to better reflect which methods Parley exposes.
- [Example] Added a special flow (lightweight configure).
- [Chat] Resolved a memory leak when rotating the device when Parley is or was shown.
- [SSL Pinning] Updated SSL pinning public key of Parley.
- [Styling] Made meta background styling only for when it's above an image.
- [Accessibility] Added configurable background color to time and checkmark in messages and made corner radius configurable.
- [Styling] Added
parley_meta_background_corner_radiusto style the corner radius of the meta background. - [Styling] Renamed
parley_message_time_background_colortoparley_meta_background_color. And renamedparley_user_image_time_backgroundandparley_agent_image_time_backgroundtoparley_user_meta_background_colorandparley_agent_meta_background_coloraccordingly.
- [Accessibility] Added configurable background color to time in messages.
- [Accessibility] Date labels are now marked as headings for accessibility.
- [Accessibility] Add media is now marked as button for accessibility.
- [Styling] Addition: Added
parley_message_time_background_color(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). Defaults beingparley_user_image_time_backgroundandparley_agent_image_time_background, transparent.
- [Accessibility] Fixed not being able to open images when using TalkBack.
- [Accessibility] Showing images fullscreen now show the image name.
- [Balloon] Fixed shadows not resizing when font size changes.
- [Accessibility] Links in the chat are now always underline and bold.
- [Accessibility] Improved navigation when a chat message contains only text.
- [Network] Fixed a typo when providing a custom network session (
onCompetion>onCompletion).
- [Chat Message] Fixed an issue causing agent images not to load since 3.10.0.
- [Network] Added support for providing a custom network session to prevent using Parley's default implementation. Check out the Advanced - Network section to use this.
- [Network] Important
ParleyNetwork.setInterceptor()is removed. Use a custom network session instead, or provide the interceptor with the defaultRetrofitNetworkSessionof Parley, as described in the Advanced - Network section.
- [Source] Parley now uses Kotlin at certain parts. Make sure to configure Kotlin in your project in case it doesn't use Kotlin yet.
- [Send Media] Fixed an issue that could cause media to be send twice when using Android 14 or higher.
- [Send Media] Added support for sending PDF files when using clientApi version 1.6 or higher.
- [Chat Message] Added support for PDF documents within the chat.
- [Styling] Addition: Added
parley_compose_media_icontoParleyComposeView. By default this is a+icon to send media within the chat (camera/gallery/document). - [Styling] Addition: Added
parley_compose_media_icon_tinttoParleyComposeView. Since this now reflects what it is referring to. - [Styling] DELETION: Removed
parley_compose_camera_tintfromParleyComposeView. Useparley_compose_media_icon_tintinstead. - [Styling] DELETION: Removed
parley_compose_camera_iconfromParleyComposeView. Useparley_compose_media_iconinstead. - [Styling] DEPRECATION: Replace
parley_images_enabledwithparley_media_enabled. - [Styling] REPLACED: Replaced
parley_images_enabledstyle attribute withparley_media_enabled. - [Styling] REPLACED: Replaced
parley_ic_cameraicon from the drawables withparley_ic_add. - [Styling] REPLACED: Replaced
parley_action_divider_margin_*withparley_divider_margin_*. - [Styling] REPLACED: Replaced
parley_action_divider_colorwithparley_divider_color. - [Styling] REPLACED: Replaced
parley_agent_action_divider_margin_*withparley_agent_divider_margin_*. - [Styling] Addition: Added
parley_user_divider_margin_*(also asparley_divider_margin_*for the styleParleyMessageUserStyle). - [Styling] Addition: Added
parley_user_divider_color(also asparley_divider_colorfor the styleParleyMessageUserStyle). - [Styling] Addition: Added
parley_file_name_font_family(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_name_font_style(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_name_text_size(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_name_text_color(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_action_font_family(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_action_font_style(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_action_text_size(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Styling] Addition: Added
parley_file_action_text_color(for the stylesParleyMessageUserStyleandParleyMessageAgentStyle). - [Strings] Addition: Added
parley_message_file_downloading. - [Strings] Addition: Added
parley_media_select. - [Strings] Addition: Added
parley_media_camera. - [Strings] Addition: Added
parley_media_gallery. - [Strings] Addition: Added
parley_media_document. - [Strings] Addition: Added
parley_general_open. - [Strings] DELETION: Removed
parley_photo. - [Strings] DELETION: Removed
parley_select_photo. - [Strings] DELETION: Removed
parley_take_photo. - [Api Version] DELETION: Removed support for clientApi version 1.0 and 1.1.
- [Send Media] Fixed an issue that could cause media to be send twice when using Android 14 or higher.
- [Dependency] Updated TrustKit to version 1.1.5.
- Fixed a crash that could happen when the ParleyView is not visible/attached.
- Added
Parley.purgeLocalMemory()method to clear local memory of Parley. Requires callingconfigure()again. - Fixed the chat scrolling to bottom automatically when no new messages where added (only happened with a custom polling implementation).
- Fixed an issue where the agent name could have an unintended shadow applied (introduced in 3.9.0).
- Updated comments concerning public keys for SSL pinning.
- Fixed an exception when the error response does not align with the expected response of Parley when using a proxy. Since this is unexpected behavior from the proxy, this change will be reverted in a later version.
- Added
Parley.setRequestNotificationPermission(enabled)to control whether Parley should request notification permissions and handle the channels.- By default this is
true, where Parley will handle the permission request and create the notification channels when needed. - NOTE: When disabling this, it's required to handle requesting the notification permission in another way, as well as creating the notification channels that are required for Parley to work properly.
- By default this is
- Added
setInterceptor(interceptor)to ParleyNetwork to be able to apply a custom interceptor.
- IMPORTANT: Parley now targets API 34 (Android 14).
- IMPORTANT: Parley now has a minimum SDK of API 21 (Android 5).
- Removed
WRITE_EXTERNAL_STORAGEpermission usage for API < 20. - Removed handling for connectivity changes for API < 20.
- Parley now uses the latest stable API version by default, which is now V1.7.
- Parley now returns error messages coming from the API instead of simple error messages based on the message of a response.
- When an image inside the chat contains an error, the error message will be shown in the chat.
- When selecting or sending an image that will fail to upload, an alert will be shown with the relevant error.
- Updated versions of dependencies.
- Updated Proguard rules when using R8.
- Addition (styling): Added attribute
parley_notification_show_connectionto stylingParleyNotificationViewto configure whether to show the offline notification view. - Addition (styling): Added attribute
parley_notification_show_notificationsto stylingParleyNotificationViewto configure whether to show the notifications disabled view. - DELETION (deprecation): Removed deprecated
ParleyNetwork(String url, String path, @XmlRes Integer securityConfigResourceFile). Use the constructors that specify the API version instead. - DELETION (deprecation): Removed deprecated
ParleyNetwork(String url, String path, @XmlRes Integer securityConfigResourceFile, Map<String, String> headers). Use the constructors that specify the API version instead. - DELETION (deprecation): Removed deprecated
Parley.setFcmToken(). UseParley.setPushToken(token, type)instead. - DELETION (deprecation): Removed deprecated style
ParleyNotificationView.parley_icon. UseParleyNotificationView.parley_icon_connectioninstead.
- Added support for the Android accessibility features.
- Added support for TalkBack.
- Read through the chat.
- Interact with the chat.
- Announcing received messages.
- Fully supporting rich message types.
- Added support for font and display scaling.
- Improved nullability around the message
typeId. - Fixed a layout inconsistency in compose view.
- Fixed image viewer close icon tint for lower API levels.
- Added new SSL certificate of parley.nu for SSL pinning.
- IMPORTANT: Parley now targets Android 13 and requests notifications permission when needed.
- DEPRECATION (styling): In the style
ParleyNotificationView, the attributeparley_iconhas been renamed toparley_icon_connection.
- Added requesting notifications permission when the
ParleyViewis visible to the user while the app doesn't handle this permissions yet. - Added message when the notifications permission is missing. The user will not receive chat notifications.
- Updated source to target API 33.
- Updated dependencies.
- Addition (styling): Added attribute
parley_notification_icon_notificationsto stylingParleyNotificationViewto configure the icon when user denied the notifications permission.
- IMPORTANT: Parley now targets Android 12.
- Added support for targeting Android 12 and higher.
- Notification channels are now created when showing the
ParleyView, causing Android 12 to request notifications permission if needed. - Updated source to target API 32.
- Added new SSL certificate of parley.nu for SSL pinning.
- When setting or clearing the user information, Parley will now reconfigure itself when needed to show the contents of the corresponding chat.
Parley now uses a unique device id per app installation as default setting.
IMPORTANT: When using anonymous chats, the chat now always starts empty after a new app installation by default.
What's changed?
- In Parley 3.4.5 and lower the Android
DEVICE_IDwas used as device id. This device id does not change per app installation, causing anonymous chats to continue with their existing chat even when the user deleted and reinstalled the app. - In Parley 3.5.0 and higher a random UUID is used as device id. This value is stored in the shared preferences by default and is generated once per installation. Updating the app won't result in a new device id as long as the cache isn't cleared. This ensures that new anonymous chats always start empty.
Note: This only affects the behavior of starting anonymous chats, chats that use the user authorization won't be affected by this change.
Note: This is the default behavior of Parley. When passing the device id to the configure method, Parley will use that as device id instead and won't store it in the shared preferences either.
- Device id is now unique per installation, instead of using the Android
DEVICE_ID. Affects how anonymous chats are handled. - Added optional
Parley.reset(callback)method to reset Parley back to its initial state, clearing the user and chat data that is in memory.
- Fixed a crash that could occur when returning to the app in case the ParleyView is being closed soon after opening.
- Added optional
ParleyView.setLaunchCallback(launchCallback)to support handling activity results directly inside a Fragment instead of the Activity. Check out the advanced steps in the README.md.
- Compose input is now aligned centred compared to the send button.
- Fixed a crash when agent is typing.
- Added optional
uniqueDeviceIdentifierparameter to the configure method to override the default device identifier that Parley uses. - Updated TouchImageView from version 2.2.0 to 3.1.1
- Add the
Parley.onRequestPermissionsResult(requestCode, permissions, grantResults);method in the Activity that contains the ParleyView for a smooth interaction when Parley needs to request permissions. Check out the updated Step 4 in README.md.
- Request camera permission if needed
-
Added option to configure where the notifications should be shown in the chat:
top(default) orbottom. For example: to show them on the bottom:Override the value
parley_notifications_position:<item name="parley_notifications_position" type="integer">bottom</item>
Or programmatically by calling:
parleyView.setNotificationsPosition(ParleyPosition.Vertical.BOTTOM);
-
Fixed a small animation issue with quick replies.
Parley now uses the latest stable API version by default, which is now V1.6. In addition to this, an apiVersion field has been added to ParleyNetwork to be able to override this with a lower version. Along with this change, deprecating the methods that do not configure the API version.
- DEPRECATION:
ParleyNetwork(String url, String path, @XmlRes Integer securityConfigResourceFile)is now deprecated, useParleyNetwork(String, String, ApiVersion, Integer)instead. - DEPRECATION:
ParleyNetwork(String url, String path, @XmlRes Integer securityConfigResourceFile, Map<String, String> headers)is now deprecated, useParleyNetwork(String, String, ApiVersion, Integer, Map)instead.
- Added
ApiVersionparameter to ParleyNetwork to define the API version used. By default Parley uses the latest stable version. - Added support for the Parley API V1.6 with the new media handling. When using API V1.2, the old method is being used.
- Added support for messages that only contain buttons.
- Added support for buttons with types
webUrl,phoneNumberandreply - Quick replies now don't require a message to show anymore
- Carousel now doesn't require a message to show anymore
- Carousel now also shows the time inside the items
- Fixed an issue where quick replies could be hidden unintentionally
- Fixed an issue with visual diffing for messages with
buttons,carousel, orquickReplies
Parley now enforces SSL pinning by default. However, when overriding the pinning with a custom network_security_config.xml, please check your network_security_config.xml whether it contains the following:
<trustkit-config enforcePinning="true"/>- Links inside messages that were not formatted as Markdown are now clickable as well
- Enforcing SSL pinning by default (SSL pinning was working before, but it is now enforced by default as intended)
- DEPRECATION:
setFcmToken()is now deprecated, usesetPushToken()instead.
- Added support for sending (silent) messages
- Added support for setting the referrer
- Added support for setting the push type
- Not showing notifications for system messages
- Updated documentation to reflect JitPack usage since version 3.1.0
- The artifacts are now published via JitPack. To migrate, update the
build.gradlefiles as shown in the latest installation steps in the README.md.
- Added support for titles in a message
- Addition (styling): Attribute
parley_title_font_familyfor the title in agent messages - Addition (styling): Attribute
parley_title_font_stylefor the title in agent messages - Addition (styling): Attribute
parley_agent_titlefor the color of the title in agent messages - Addition (styling): Attribute
parley_agent_title_text_sizefor the title in agent messages
- Addition (styling): Attribute
- Added support for buttons in the chat
- Addition (styling): Attribute
parley_agent_action_paddingfor the padding of the actions in agent messages - Addition (styling): Attribute
parley_action_font_familyfor the actions in agent messages - Addition (styling): Attribute
parley_action_font_stylefor the actions in agent messages - Addition (styling): Attribute
parley_agent_action_divider_marginfor the margin of the dividers in the actions in agent messages - Addition (styling): Attribute
parley_agent_action_dividerfor the color of the dividers in the actions in agent messages - Addition (styling): Attribute
parley_agent_actionfor the color of the actions in agent messages - Addition (styling): Attribute
parley_agent_action_text_sizefor the actions in the agent messages
- Addition (styling): Attribute
- Added support for carousels in the chat
- The carousel can be styled the same way as agent messages. By default it has the same styles as agent messages, but they can be overridden individually
- With a few exceptions being the
background,margin,image_content_paddingandaction_divider_margin, which have their own default values - Additions (styling): Properties that are available for agent messages for the items that exist in the carousel, can be overridden by using the property named with
carouselin it - For example: The text color for the normal agent message is named
parley_agent_text. To override this for only the carousel messages, the attributeparley_agent_carousel_textis used
- Improved the placeholder image in case the image fails to load in a message
- It is now handled as an icon
- Addition (styling): It can now be tinted by using
parley_image_placeholder_tintparley_user_image_placeholder_tintfor user messages, by default it is the user text colorparley_agent_image_placeholder_tintfor agent messages, by default it is the agent text color
- Added support for quick replies in the chat
- Additions (styling): Introduced the
ParleySuggestionViewStyle. It can be customised by using the known attributes forbackground,margin,content_padding,fontandtext.- Also providing a default style. These values can be overridden by using the
suggestionkey in the name. - For example: The
parley_backgroundfor a suggestion is set by usingparley_suggestion_background.
- Also providing a default style. These values can be overridden by using the
- Additions (styling): Introduced the
For a complete styling overview, check out parley_configuration.xml for all the available options.
- Added support for a message containing an image as well as text
- Deprecation (styling): Attributes
parley_message_meta_paddingandparley_image_meta_paddingare now unified to a single property:parley_meta_padding - Deprecation (styling): Attribute
parley_image_name_paddinghas been renamed toparley_name_padding
The first release of version 3.0 of the Parley library