diff --git a/CHANGELOG.md b/CHANGELOG.md
index e2b278e..08c7ded 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,7 @@
# Changelog
## 18.0.0
-###### Release Date: TBD
+###### Release Date: 31-03-2026
### ⚡ Important Changes
@@ -930,15 +930,15 @@ Minor bug fixes
### 🚀 Enhancements
* We've renamed some of our API methods. The term `register` has been replaced with `login`. As part of this change, we've also added success and failure callbacks to the updated login methods.
- This means that the following old `register` methods are now deprecated
- - `registerUnidentifiedUser()`
- - `registerIdentifiedUser(registration)`
- - `updateUser(userAttributes)`
+ This means that the following old `register` methods are now deprecated
+ - `registerUnidentifiedUser()`
+ - `registerIdentifiedUser(registration)`
+ - `updateUser(userAttributes)`
- We've replaced them with
- - `loginUnidentifiedUser(statusCallback)`
- - `loginIdentifiedUser(registration, statusCallback)`
- - `updateUser(userAttributes, statusCallback)`
+ We've replaced them with
+ - `loginUnidentifiedUser(statusCallback)`
+ - `loginIdentifiedUser(registration, statusCallback)`
+ - `updateUser(userAttributes, statusCallback)`
* Added support to connect to Intercom workspaces that are hosted on servers in our Australian region
@@ -1035,7 +1035,7 @@ New features in this update:
* Place the article search card at the top of the Messenger home screen to give your self-serve content more prominence.
* Uncover insights and opportunities to optimize your self-serve support by using our updated Articles reporting.
* If you’ve set a custom icon for the Intercom launcher, that icon will now be used in your app as well.
-
+
## Version 10.1.1
26-08-2021
@@ -1065,7 +1065,7 @@ New features in this update:
* Localization - with right to left language display
* Accessibility support: screen readers, dynamic font sizes, and keyboard navigation - to support all end users
* New Help Center Data API that enables you to build your own help center UI, enabling a much deeper and custom integration into your app.
-
+ 
### Improvements and bug fixes
* Fixed an issue where the special notice message would not display.
@@ -1075,7 +1075,7 @@ New features in this update:
26-05-2021
* Intercom no longer depends on Glide and now uses Coil to load images.
* Intercom no longer requires the Jcenter repository.
-https://developers.intercom.com/installing-intercom/docs/android-installation#section-maven-central
+ https://developers.intercom.com/installing-intercom/docs/android-installation#section-maven-central
* Bug fixes and performance improvements.
## Version 9.1.2
@@ -1116,7 +1116,7 @@ https://developers.intercom.com/installing-intercom/docs/android-installation#se
10-11-2020
* New feature: You can now open an article or Mobile Carousel programmatically in your app. We have added two new methods to our API to enable this, [displayArticle](https://developers.intercom.com/installing-intercom/docs/android-configuration#section-present-an-article-programmatically) and [displayCarousel](https://developers.intercom.com/installing-intercom/docs/android-configuration#section-present-a-carousel-programmatically).
* Improvement: Added an optional special notice message, that can be displayed at the top of a conversation. This has been commonly used to set expectations during COVID, find more details [here](https://www.intercom.com/help/en/articles/3822642-tips-for-using-intercom-to-help-with-your-covid-19-response).
-
+ 
* Fixed: An issue where the links would not open inside conversations on Android 11.
* Fixed: An issue where we would display the wrong timezone in the conversation header.
@@ -1467,8 +1467,8 @@ The Business Messenger reimagined.
**Experimental API**
* Added an experimental API. To use it please import `io.intercom.android.sdk.experimental.Intercom`. The changes to the new API are:
- * Replaced `Intercom.initialize(Application, String, String)` with `Intercom.boot(Application, IntercomSettings)` Unlike `initialize`, `boot` does not need to be called in a custom Application class. It also results in the creation/ logging in of a user.
- * The methods `registerUnidentifiedUser()` and `registerIdentifiedUser(Registration)` are removed. Calling `boot` now registers a user. The `IntercomSettings` object has an optional email and userId. If either of those was provided an identified user is registered, otherwise an unidentified user is created.
+ * Replaced `Intercom.initialize(Application, String, String)` with `Intercom.boot(Application, IntercomSettings)` Unlike `initialize`, `boot` does not need to be called in a custom Application class. It also results in the creation/ logging in of a user.
+ * The methods `registerUnidentifiedUser()` and `registerIdentifiedUser(Registration)` are removed. Calling `boot` now registers a user. The `IntercomSettings` object has an optional email and userId. If either of those was provided an identified user is registered, otherwise an unidentified user is created.
* To migrate from an unidentified to an identified user you can simply call `updateUser(UserAttributes)` where the `UserAttributes` object contains an userId and/or email.
* The method `logout()` has been replaced with `shutdown()`.
@@ -1936,39 +1936,39 @@ Part of this involves a new Intercom Launcher that you can show in your app to l
### Dependencies
As part of the work to bring a better visual aesthetic to the Messenger we started using some new dependencies. Chief amongst these are the support libraries Google provides. This library now relies on:
- * `com.android.support:appcompat-v7:23.3.0`
- * `com.android.support:recyclerview-v7:23.3.0`
- * `com.android.support:design:23.3.0`
+* `com.android.support:appcompat-v7:23.3.0`
+* `com.android.support:recyclerview-v7:23.3.0`
+* `com.android.support:design:23.3.0`
If you use these libraries in your project be aware that we plan to stay up to date with releases and this will, by default, transitively force your app to use these versions too.
We also added some dependencies that we're namespacing to avoid version conflicts and other conflicts:
- * `com.facebook.rebound:rebound:0.3.8` for nice spring animations
- * `com.github.bumptech.glide:glide:3.7.0` for gif support
+* `com.facebook.rebound:rebound:0.3.8` for nice spring animations
+* `com.github.bumptech.glide:glide:3.7.0` for gif support
And on top of that we've updated OkHttp and Retrofit to the 3.x and 2.x versions. These are also namespaced so that won't confict with anything in your code.
### New methods on the public interface
- * `void setLauncherVisibility(Visibility visibility)` will toggle whether the new Intercom launcher appears in your app. Valid parameters are `Intercom.Visibility.VISIBLE` and `Intercom.Visibility.GONE`. The default is `GONE`.
- * `void setInAppMessageVisibility(Visibility visibility)` will toggle whether in-app messages appear in your app when sent to a user. Valid parameters are `Intercom.VISIBLE` and `Intercom.GONE`. The default is `VISIBLE`.
- * `void hideMessenger()` will close the Intercom Messenger if it's onscreen. The typical use case we've seen for something like this is that an important event has happened in the background of your app (eg a user has taken 10,000 steps) and you need to display something immediately. We'd advise normally using an `Intent` to start your activity if that's possible within your app's architecture; we're accounting for the possibility that it isn't always possible with this method.
- * `int getUnreadConversationCount` will return the last known number of unread conversations that a user has.
- * `void addUnreadConversationCountListener(UnreadConversationCountListener listener)` lets you set a listener that will be notified every time the known conversation count for this user changes. For example, you may want to display a badge somewhere in your app that exposes to a user the number of unread conversations they have. Multiple listeners can be registered at a time. A **strong** reference is kept to each listener.
- * `void removeUnreadConversationCountListener(UnreadConversationCountListener listener)` removes this listener from the list that will be notified of unread conversation count updates.
+* `void setLauncherVisibility(Visibility visibility)` will toggle whether the new Intercom launcher appears in your app. Valid parameters are `Intercom.Visibility.VISIBLE` and `Intercom.Visibility.GONE`. The default is `GONE`.
+* `void setInAppMessageVisibility(Visibility visibility)` will toggle whether in-app messages appear in your app when sent to a user. Valid parameters are `Intercom.VISIBLE` and `Intercom.GONE`. The default is `VISIBLE`.
+* `void hideMessenger()` will close the Intercom Messenger if it's onscreen. The typical use case we've seen for something like this is that an important event has happened in the background of your app (eg a user has taken 10,000 steps) and you need to display something immediately. We'd advise normally using an `Intent` to start your activity if that's possible within your app's architecture; we're accounting for the possibility that it isn't always possible with this method.
+* `int getUnreadConversationCount` will return the last known number of unread conversations that a user has.
+* `void addUnreadConversationCountListener(UnreadConversationCountListener listener)` lets you set a listener that will be notified every time the known conversation count for this user changes. For example, you may want to display a badge somewhere in your app that exposes to a user the number of unread conversations they have. Multiple listeners can be registered at a time. A **strong** reference is kept to each listener.
+* `void removeUnreadConversationCountListener(UnreadConversationCountListener listener)` removes this listener from the list that will be notified of unread conversation count updates.
### Removed methods from public interface
All deprecated methods have been dropped from Intercom, these include
- * `setMessagesHidden(boolean visibility)` in favour of two new visibility methods explained below
- * `openGCMMessage(Uri data)` in favour of `openGCMMessage(Intent intent)`
+* `setMessagesHidden(boolean visibility)` in favour of two new visibility methods explained below
+* `openGCMMessage(Uri data)` in favour of `openGCMMessage(Intent intent)`
In addition some other methods have been dropped:
- * `setPreviewPosition` has been removed with no replacement
- * `setVisibility` has been removed in favour of `setLauncherVisibility` and `setInAppMessageVisibility`
+* `setPreviewPosition` has been removed with no replacement
+* `setVisibility` has been removed in favour of `setLauncherVisibility` and `setInAppMessageVisibility`
### Miscellaneous
- * We've hidden our resources so you won't see all our layouts, colours etc when you're trying to reference your own resources
+* We've hidden our resources so you won't see all our layouts, colours etc when you're trying to reference your own resources
## Version 1.1.21
@@ -2207,14 +2207,14 @@ When updating to this version from a previous version we recommend cleaning the
04-29-2015
* Removed GCM permissions so that now developers have the option of adding them only if you *want* to register for push notifications
- * <!-- GCM REQUIRED PERMISSIONS -->
- * <uses-permission android:name="android.permission.WAKE_LOCK" />
- * <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
- * <uses-permission android:name="android.permission.VIBRATE"/>
- *
- * <!-- GCM Optional PERMISSIONS -->
- * <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+ * <!-- GCM REQUIRED PERMISSIONS -->
+ * <uses-permission android:name="android.permission.WAKE_LOCK" />
+ * <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
+ * <uses-permission android:name="android.permission.VIBRATE"/>
+ *
+ * <!-- GCM Optional PERMISSIONS -->
+ * <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+ * <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
* Added audio cues to received and sent messages
* Fixed [issue#54](https://github.com/intercom/intercom-android/issues/54) Updated action bar visuals
* Fixed a bug where a conversation replied to by a user would update it's summary in the inbox but not it's position, related to [issue#58](https://github.com/intercom/intercom-android/issues/58)
diff --git a/README.md b/README.md
index 05db0ac..3a56d3a 100644
--- a/README.md
+++ b/README.md
@@ -31,7 +31,7 @@ The mobile SDK supports many different message formats, all of which can be crea
We check for new messages when your app opens and whenever your customer or your app interacts with Intercom.
## Installation
-Intercom for Android supports API 21 and above.
+Intercom for Android supports API 23 and above.
There are 2 options for installing Intercom on your Android app.
diff --git a/sample/app/build.gradle b/sample/app/build.gradle
index 2ced8fd..112ba60 100644
--- a/sample/app/build.gradle
+++ b/sample/app/build.gradle
@@ -2,15 +2,16 @@ plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'com.google.gms.google-services'
+ id 'org.jetbrains.kotlin.plugin.compose' version '2.0.20'
}
android {
- compileSdk 35
+ compileSdk 36
defaultConfig {
applicationId "com.intercom.sample"
- minSdk 21
- targetSdk 35
+ minSdk 23
+ targetSdk 36
versionCode 1
versionName "1.0"
@@ -36,9 +37,6 @@ android {
buildFeatures {
compose true
}
- composeOptions {
- kotlinCompilerExtensionVersion "1.4.8"
- }
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
@@ -49,22 +47,22 @@ android {
dependencies {
// Compose
- def composeBom = platform("androidx.compose:compose-bom:2025.04.00")
+ def composeBom = platform('androidx.compose:compose-bom:2026.03.01')
implementation composeBom
- implementation "androidx.compose.ui:ui"
- implementation "androidx.compose.material3:material3"
- implementation "androidx.compose.ui:ui-tooling-preview"
- debugImplementation "androidx.compose.ui:ui-tooling"
+ implementation 'androidx.compose.ui:ui'
+ implementation 'androidx.compose.material3:material3'
+ implementation 'androidx.compose.ui:ui-tooling-preview'
+ debugImplementation 'androidx.compose.ui:ui-tooling'
- implementation 'androidx.core:core-ktx:1.15.0'
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7'
- implementation 'androidx.activity:activity-compose:1.10.1'
- implementation("androidx.navigation:navigation-compose:2.8.8")
+ implementation 'androidx.core:core-ktx:1.18.0'
+ implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.10.0'
+ implementation 'androidx.activity:activity-compose:1.13.0'
+ implementation 'androidx.navigation:navigation-compose:2.9.7'
- implementation "com.google.accompanist:accompanist-flowlayout:0.27.0"
+ implementation 'com.google.accompanist:accompanist-flowlayout:0.36.0'
- implementation("androidx.datastore:datastore-preferences:1.1.3")
+ implementation 'androidx.datastore:datastore-preferences:1.2.1'
- implementation("io.intercom.android:intercom-sdk:18.0.0")
- implementation("com.google.firebase:firebase-messaging:24.1.0")
+ implementation 'io.intercom.android:intercom-sdk:18.0.0'
+ implementation 'com.google.firebase:firebase-messaging:25.0.1'
}
diff --git a/sample/app/src/main/java/com/intercom/sample/components/UserDetailsEditor.kt b/sample/app/src/main/java/com/intercom/sample/components/UserDetailsEditor.kt
index eeee8e9..2c3724c 100644
--- a/sample/app/src/main/java/com/intercom/sample/components/UserDetailsEditor.kt
+++ b/sample/app/src/main/java/com/intercom/sample/components/UserDetailsEditor.kt
@@ -9,16 +9,16 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.outlined.Delete
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import com.intercom.sample.R
import io.intercom.android.sdk.UserAttributes
@Preview
@@ -48,7 +48,7 @@ fun UserDetailsEditor(onUserDetailsSaved: (UserAttributes) -> Unit = {}) {
onClick = { userStates.remove(userStates[index]) },
content = {
Icon(
- imageVector = Icons.Outlined.Delete,
+ painter = painterResource(R.drawable.intercom_ic_delete),
contentDescription = "Delete row"
)
}
diff --git a/sample/app/src/main/res/drawable/intercom_ic_delete.xml b/sample/app/src/main/res/drawable/intercom_ic_delete.xml
new file mode 100644
index 0000000..de7a89f
--- /dev/null
+++ b/sample/app/src/main/res/drawable/intercom_ic_delete.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/sample/build.gradle b/sample/build.gradle
index eb3c044..fdad133 100644
--- a/sample/build.gradle
+++ b/sample/build.gradle
@@ -1,7 +1,7 @@
plugins {
- id 'com.android.application' version '8.8.2' apply false
- id 'com.google.gms.google-services' version '4.4.2' apply false
- id 'org.jetbrains.kotlin.android' version '1.8.22' apply false
+ id 'com.android.application' version '8.10.1' apply false
+ id 'com.google.gms.google-services' version '4.4.4' apply false
+ id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
}
tasks.register('clean', Delete) {