Plugin.Maui.Intercom
0.6.0
dotnet add package Plugin.Maui.Intercom --version 0.6.0
NuGet\Install-Package Plugin.Maui.Intercom -Version 0.6.0
<PackageReference Include="Plugin.Maui.Intercom" Version="0.6.0" />
<PackageVersion Include="Plugin.Maui.Intercom" Version="0.6.0" />
<PackageReference Include="Plugin.Maui.Intercom" />
paket add Plugin.Maui.Intercom --version 0.6.0
#r "nuget: Plugin.Maui.Intercom, 0.6.0"
#:package Plugin.Maui.Intercom@0.6.0
#addin nuget:?package=Plugin.Maui.Intercom&version=0.6.0
#tool nuget:?package=Plugin.Maui.Intercom&version=0.6.0
Plugin.Maui.Intercom
Plugin.Maui.Intercom provides the ability to add Intercom to your .NET MAUI application using Native Library Interop (NLI).
Status
Both Android and iOS platforms are working.
<img width="403" height="696" alt="Screenshot 2026-01-20 134953" src="https://github.com/user-attachments/assets/9696d97e-87a2-450a-bd76-ed261101f2f0" /> <img width="395" height="505" alt="Screenshot 2026-01-20 124137" src="https://github.com/user-attachments/assets/c4f5a049-cdbe-46fc-bce4-bc1b4260c8d2" />
Install Plugin
Available on NuGet.
Install with the dotnet CLI: dotnet add package Plugin.Maui.Intercom, or through the NuGet Package Manager in Visual Studio.
Supported Platforms
| Platform | Minimum Version Supported |
|---|---|
| iOS | 15+ |
| Android | 5.0 (API 21) |
Native SDK Versions
| Platform | Intercom SDK Version |
|---|---|
| Android | 17.4.1 |
| iOS | Latest via SPM |
Setup
MauiProgram.cs
Register Intercom in your MauiProgram.cs:
using Plugin.Maui.Intercom;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseIntercom() // Add this line
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});
return builder.Build();
}
}
Android Configuration
Add the following permissions to your Platforms/Android/AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
iOS Configuration
No additional configuration is required for iOS.
API Usage
Initialization
Initialize Intercom early in your app's lifecycle (e.g., in App.xaml.cs or your main page):
using Plugin.Maui.Intercom;
// Initialize with your Intercom credentials
Intercom.Default.Initialize("your-api-key", "your-app-id");
You can find your API key and App ID in your Intercom settings.
User Registration
Register an unidentified user
Intercom.Default.Register(
onSuccess: () => Console.WriteLine("User registered successfully"),
onFailure: (error) => Console.WriteLine($"Registration failed: {error}")
);
Register with User ID
Intercom.Default.RegisterWithUserId(
"user-123",
onSuccess: () => Console.WriteLine("User registered"),
onFailure: (error) => Console.WriteLine($"Failed: {error}")
);
Register with Email
Intercom.Default.RegisterWithEmail(
"user@example.com",
onSuccess: () => Console.WriteLine("User registered"),
onFailure: (error) => Console.WriteLine($"Failed: {error}")
);
Identity Verification (Recommended)
For enhanced security, use Identity Verification:
// Generate the user hash on your server using HMAC-SHA256
// with your Intercom secret key and the user's identifier
Intercom.Default.SetUserHash("hmac-sha256-hash");
Presenting Intercom UI
Show Messenger
// Show messenger without a pre-filled message
Intercom.Default.PresentMessenger(null);
// Show messenger with a pre-filled message
Intercom.Default.PresentMessenger("I need help with...");
Show Help Center
Intercom.Default.PresentHelpCenter();
Show Support Center
Intercom.Default.PresentSupportCenter();
Show a Carousel
Intercom.Default.PresentCarousel("carousel-id");
Customization
Show/Hide Messenger Launcher
Intercom.Default.SetVisible(true); // Show launcher
Intercom.Default.SetVisible(false); // Hide launcher
Adjust Bottom Padding
// Add 100 pixels of padding from the bottom
Intercom.Default.SetBottomPadding(100);
Logout
Intercom.Default.Logout();
Building from Source
Prerequisites (Windows)
⚠️ IMPORTANT: On Windows, you must enable long path support to build the iOS bindings.
- Open PowerShell as Administrator
- Run:
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -PropertyType DWORD -Force - Restart your computer
Quick Build
From the repository root:
.\build.ps1
Manual Build
cd src
dotnet build Plugin.Maui.Intercom.sln
For detailed build instructions, troubleshooting, and development tips, see BUILD.md.
Dependency Injection
You can also use dependency injection:
// In MauiProgram.cs
builder.Services.AddSingleton<IIntercom>(Intercom.Default);
// In your ViewModel or Page
public class MyViewModel
{
private readonly IIntercom _intercom;
public MyViewModel(IIntercom intercom)
{
_intercom = intercom;
}
public void ShowMessenger()
{
_intercom.PresentMessenger(null);
}
}
Complete Example
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
// Initialize Intercom
Intercom.Default.Initialize("your-api-key", "your-app-id");
}
private void OnLoginClicked(object sender, EventArgs e)
{
// Register user after login
Intercom.Default.RegisterWithUserId(
"user-123",
onSuccess: () =>
{
// Optionally set user hash for identity verification
Intercom.Default.SetUserHash("server-generated-hash");
},
onFailure: (error) =>
{
DisplayAlert("Error", $"Failed to register: {error}", "OK");
}
);
}
private void OnHelpClicked(object sender, EventArgs e)
{
Intercom.Default.PresentMessenger(null);
}
private void OnLogoutClicked(object sender, EventArgs e)
{
Intercom.Default.Logout();
}
}
Troubleshooting
Android: Compose Version Mismatch
If you encounter runtime crashes related to NoSuchMethodError in Compose classes, ensure you're using Intercom SDK 17.4.1 or later, which is compatible with AndroidX Compose BOM 2025.11.01.
iOS: Build on Windows
iOS builds require macOS. The sample project is configured to skip iOS targets on Windows to avoid build errors.
Acknowledgements
This project could not have come to be without these projects and people, thank you!
- .NET MAUI Community Toolkit - For the Native Library Interop pattern
- Intercom - For their excellent customer messaging platform
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-android35.0 is compatible. net9.0-ios18.0 is compatible. net10.0-android was computed. net10.0-ios was computed. |
-
net9.0-android35.0
- GoogleGson (>= 2.13.0.1)
- Microsoft.Maui.Controls (>= 9.0.120)
- Plugin.Maui.Intercom.Android.Binding (>= 0.6.0)
- Square.OkIO (>= 3.9.1.3)
- Square.Retrofit2 (>= 2.11.0.5)
- Square.Retrofit2.ConverterGson (>= 2.11.0.5)
- XAB.Facebook.Shimmer (>= 0.5.0.4)
- XAB.FlexboxLayout (>= 3.0.0.2)
- Xamarin.Android.Glide (>= 4.16.0.12)
- Xamarin.AndroidX.Activity (>= 1.11.0)
- Xamarin.AndroidX.Activity.Compose (>= 1.11.0)
- Xamarin.AndroidX.Annotation (>= 1.9.1.5)
- Xamarin.AndroidX.AppCompat (>= 1.7.0.6)
- Xamarin.AndroidX.AppCompat.AppCompatResources (>= 1.7.0.6)
- Xamarin.AndroidX.Collection (>= 1.5.0.3)
- Xamarin.AndroidX.Compose.Foundation (>= 1.9.2)
- Xamarin.AndroidX.Compose.Material (>= 1.9.2)
- Xamarin.AndroidX.Compose.Material.Icons.Core (>= 1.7.8.3)
- Xamarin.AndroidX.Compose.Material3 (>= 1.4.0)
- Xamarin.AndroidX.Compose.Runtime (>= 1.9.2)
- Xamarin.AndroidX.Compose.UI (>= 1.9.2)
- Xamarin.AndroidX.Compose.UI.Tooling (>= 1.9.2)
- Xamarin.AndroidX.Compose.UI.Tooling.Preview (>= 1.9.2)
- Xamarin.AndroidX.ConstraintLayout (>= 2.2.1.1)
- Xamarin.AndroidX.Core (>= 1.17.0)
- Xamarin.AndroidX.Core.Core.Ktx (>= 1.17.0)
- Xamarin.AndroidX.DataBinding.ViewBinding (>= 8.9.1.1)
- Xamarin.AndroidX.ExifInterface (>= 1.4.0.1)
- Xamarin.AndroidX.Fragment (>= 1.8.6.1)
- Xamarin.AndroidX.Fragment.Ktx (>= 1.8.6.1)
- Xamarin.AndroidX.Legacy.Support.Core.UI (>= 1.0.0.33)
- Xamarin.AndroidX.Legacy.Support.Core.Utils (>= 1.0.0.32)
- Xamarin.AndroidX.Lifecycle.Common (>= 2.9.4)
- Xamarin.AndroidX.Lifecycle.LiveData.Core (>= 2.9.4)
- Xamarin.AndroidX.Lifecycle.Runtime (>= 2.9.4)
- Xamarin.AndroidX.Lifecycle.Runtime.Ktx (>= 2.9.4)
- Xamarin.AndroidX.Lifecycle.ViewModel (>= 2.9.4)
- Xamarin.AndroidX.Lifecycle.ViewModel.Compose (>= 2.9.4)
- Xamarin.AndroidX.Lifecycle.ViewModel.Ktx (>= 2.9.4)
- Xamarin.AndroidX.Media3.ExoPlayer (>= 1.6.1.1)
- Xamarin.AndroidX.Navigation.Compose (>= 2.8.9.1)
- Xamarin.AndroidX.Navigation.Runtime (>= 2.8.9.1)
- Xamarin.AndroidX.Navigation.Runtime.Ktx (>= 2.8.9.1)
- Xamarin.AndroidX.Navigation.UI.Ktx (>= 2.8.9.1)
- Xamarin.AndroidX.Paging.Common (>= 3.3.6.1)
- Xamarin.AndroidX.Paging.Runtime.Ktx (>= 3.3.6.1)
- Xamarin.AndroidX.ProfileInstaller.ProfileInstaller (>= 1.4.1.5)
- Xamarin.AndroidX.RecyclerView (>= 1.4.0.1)
- Xamarin.AndroidX.VectorDrawable (>= 1.2.0.6)
- Xamarin.AndroidX.VectorDrawable.Animated (>= 1.2.0.6)
- Xamarin.Google.Accompanist.DrawablePainter (>= 0.37.2.1)
- Xamarin.Google.Accompanist.Permissions (>= 0.37.2.1)
- Xamarin.Google.Accompanist.Placeholder (>= 0.36.0.4)
- Xamarin.Google.Accompanist.SystemUIController (>= 0.36.0.4)
- Xamarin.Google.Android.Material (>= 1.12.0.3)
- Xamarin.Kotlin.StdLib (>= 2.2.20)
- Xamarin.Kotlin.StdLib.Jdk8 (>= 2.2.20)
- Xamarin.KotlinX.Coroutines.Core (>= 1.10.2.1)
- Xamarin.KotlinX.Serialization.Core.Jvm (>= 1.9.0.1)
- Xamarin.KotlinX.Serialization.Json (>= 1.9.0.1)
-
net9.0-ios18.0
- Microsoft.Maui.Controls (>= 9.0.120)
- Plugin.Maui.Intercom.iOS.Binding (>= 0.6.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.6.0 | 32 | 1/22/2026 |
| 0.5.9 | 34 | 1/22/2026 |
| 0.5.8 | 34 | 1/21/2026 |
| 0.5.7 | 31 | 1/21/2026 |
| 0.5.4 | 31 | 1/20/2026 |
| 0.0.0-alpha.0.22 | 26 | 1/20/2026 |
| 0.0.0-alpha.0.21 | 34 | 1/20/2026 |