From 18215f79a21f0214fe422102db4b2854238aa203 Mon Sep 17 00:00:00 2001 From: Irena Szukala Date: Tue, 31 Mar 2026 12:10:42 +0200 Subject: [PATCH 1/3] Updated Sample app --- sample/app/build.gradle | 36 +++++++++---------- .../sample/components/UserDetailsEditor.kt | 6 ++-- .../main/res/drawable/intercom_ic_delete.xml | 10 ++++++ sample/build.gradle | 6 ++-- 4 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 sample/app/src/main/res/drawable/intercom_ic_delete.xml 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) { From 65f03ea3a99749c65a5c1eb453079fe6b082c4c4 Mon Sep 17 00:00:00 2001 From: Irena Szukala Date: Tue, 31 Mar 2026 12:16:01 +0200 Subject: [PATCH 2/3] CHANGELOG update --- CHANGELOG.md | 78 ++++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) 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. -![Help center](https://user-images.githubusercontent.com/3718984/122231184-2c707480-ceb2-11eb-8178-6d0aaab34713.gif) + ![Help center](https://user-images.githubusercontent.com/3718984/122231184-2c707480-ceb2-11eb-8178-6d0aaab34713.gif) ### 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). -![Special notice message](https://user-images.githubusercontent.com/3718984/98683858-6ea26800-235d-11eb-9bb3-4dc3a89eaf6d.png) + ![Special notice message](https://user-images.githubusercontent.com/3718984/98683858-6ea26800-235d-11eb-9bb3-4dc3a89eaf6d.png) * 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) From 5de8fc06245beecf5fb15d7fb2459404f3c41f06 Mon Sep 17 00:00:00 2001 From: Irena Szukala Date: Tue, 31 Mar 2026 12:21:28 +0200 Subject: [PATCH 3/3] README update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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.