---
schema_version: "1"
id: 86115b65e12d9061ca2eb0bcb14c72d662db4f878a1ec2cf2049a50a9e6e44b0
title: In-App Messaging
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/marketing-cloud-mobilepush/engagement_sdk/references/flutter-hybrid/flutter-in-app-messaging.md
canonical_url: https://developer.salesforce.com/docs/marketing/mobile-unified-sdk/references/engagement-mobile-sdk-reference/flutter-in-app-messaging.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 4ef8ebf04ebee121ee3ff08758dedde2abe18748570ff09cab5c5aa7570ceec6
products:
  - Salesforce Engagement SDK
---
# In-App Messaging

This section provides API reference details for the In-App Messaging module in the Flutter unified plugin.

## setInAppMessageDecisionHandler

Registers a handler that decides whether the SDK should display an in-app message. This handler gives the app the final say over the native `shouldShowMessage` or `shouldShow` delegate.

### Syntax

```dart
IamModule.setInAppMessageDecisionHandler(handler);
```

### Parameters

| Parameter | Type                           | Description                                                                                                                                                                                                                                                        |
| --------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `handler` | `InAppMessageDecisionHandler?` | Invoked with the full `InAppMessage` to decide whether it should display. Return or complete with `true` to display the message, `false` to suppress it. Pass `null` to clear the handler and restore default SDK behavior, where every message shows immediately. |

### Returns

- `Future<void>`

### Example

```dart
import 'package:sfmc_iam/sfmc_iam.dart';

await IamModule.requestSdk();
IamModule.setInAppMessageDecisionHandler((message) => message.id != 'blocked-id');
```

## showInAppMessage

Displays a specific in-app message by its identifier.

### Syntax

```dart
IamModule.showInAppMessage(id);
```

### Parameters

| Parameter | Type     | Description                                                                                                   |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `id`      | `String` | The identifier of the in-app message to display. If this value is blank or null, the API rejects the request. |

### Returns

- `Future<void>`

### Example

```dart
import 'package:sfmc_iam/sfmc_iam.dart';

await IamModule.requestSdk();
await IamModule.showInAppMessage('welcome-message');
```

### See Also

- [Android SDK Reference](https://salesforce-marketingcloud.github.io/MarketingCloudSDK-Android/javadocs/SFMCSdk/11.0/inappmessagingfeaturemodule/com.salesforce.marketingcloud.inappmessagingfeature/-in-app-message-manager/show-message.html)
- [iOS SDK Reference](https://developer.salesforce.com/docs/marketing/mobile-unified-sdk/references/engagement-mobile-sdk-reference/%3Chttps://salesforce-marketingcloud.github.io/MarketingCloudSDK-iOS/appledocs/InAppMessagingFeatureSdk/1.0/Classes/InAppMessagingFeature.html#/c:@CM@InAppMessagingFeatureSDK@objc(cs)SFInAppMessagingFeature(im)showInAppMessageWithMessageId:>)

## inAppMessageEvents

A broadcast stream of in-app message lifecycle events (`shouldShow`, `didShow`, `didClose`).

### Syntax

```dart
IamModule.inAppMessageEvents;
```

### Returns

- `Stream<InAppMessageEvent>` - Emits an `InAppMessageEvent` each time an in-app message's lifecycle phase changes.

### Example

```dart
import 'package:sfmc_iam/sfmc_iam.dart';

await IamModule.requestSdk();
IamModule.inAppMessageEvents.listen((event) {
  switch (event.type) {
    case InAppMessageEventType.shouldShow:
      // About to display: consult custom rules if needed.
      break;
    case InAppMessageEventType.didShow:
      // Message is now on screen: record impression.
      break;
    case InAppMessageEventType.didClose:
      // Message dismissed: record close.
      break;
  }
  debugPrint('IAM ${event.type.name}: ${event.message.id}');
});
```

## setInAppMessageFont

Sets the font used to render in-app messages.

### Syntax

```dart
IamModule.setInAppMessageFont(fontName);
```

### Parameters

| Parameter  | Type      | Description                                                                                                                                                                                          |
| ---------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `fontName` | `String?` | The font name to apply. In Android, the name is resolved with `Typeface.create`. In iOS, it's the PostScript name passed to `setInAppMessageFont`. Pass `null` to revert to the system default font. |

### Returns

- `Future<void>`

### Example

```dart
import 'package:sfmc_iam/sfmc_iam.dart';

await IamModule.requestSdk();
await IamModule.setInAppMessageFont('HelveticaNeue-Bold');
```

### See Also

- [Android SDK Reference](https://salesforce-marketingcloud.github.io/MarketingCloudSDK-Android/javadocs/SFMCSdk/11.0/inappmessagingfeaturemodule/com.salesforce.marketingcloud.inappmessagingfeature/-in-app-message-manager/set-typeface.html)
- [iOS SDK Reference](https://developer.salesforce.com/docs/marketing/mobile-unified-sdk/references/engagement-mobile-sdk-reference/%3Chttps://salesforce-marketingcloud.github.io/MarketingCloudSDK-iOS/appledocs/InAppMessagingFeatureSdk/1.0/Classes/InAppMessagingFeature.html#/c:@CM@InAppMessagingFeatureSDK@objc(cs)SFInAppMessagingFeature(im)setInAppMessageFontWithName:>)

## setStatusBarColor

Sets the status bar color of the in-app message activity. Only Android apps support this capability.

### Syntax

```dart
IamModule.setStatusBarColor(colorArgb);
```

### Parameters

| Parameter   | Type  | Description                                      |
| ----------- | ----- | ------------------------------------------------ |
| `colorArgb` | `int` | A 32-bit ARGB color value, such as `0xFF0000FF`. |

### Returns

- `Future<void>`

### Example

```dart
import 'package:sfmc_iam/sfmc_iam.dart';

await IamModule.requestSdk();
await IamModule.setStatusBarColor(0xFF0000FF);
```

### See Also

- [Android SDK Reference](https://salesforce-marketingcloud.github.io/MarketingCloudSDK-Android/javadocs/SFMCSdk/11.0/inappmessagingfeaturemodule/com.salesforce.marketingcloud.inappmessagingfeature/-in-app-message-manager/set-status-bar-color.html)
