Listen for Events

Control message display and get information about the in-app message display lifecycle by using the in-app messaging EventListener.

After the SDK initializes, register your in-app message EventListener with InAppMessageManager.

Use this code to register an event listener in version 11 of the SDK for Android.

1// Set at configuration time
2SFMCSdk.configure(applicationContext as Application, SFMCSdkModuleConfig.build {
3  inAppMessagingFeatureModuleConfig = InAppMessagingFeatureConfig.builder().apply {
4   setEventListener(object : InAppMessageManager.EventListener {
5     override fun shouldShowMessage(message: InAppMessage): Boolean {
6       return if (shouldShowMessage /* Your Custom logic confirming to show in-app message */) {
7         true
8       } else {
9         // Store message id for later
10         val blockedMessageId = message.id
11         false
12       }
13     }
14     override fun didShowMessage(message: InAppMessage) = Unit
15     override fun didCloseMessage(message: InAppMessage, action: InAppMessageCloseAction) = Unit
16   })
17  }.build()
18})
19
20// Or set at anytime after configuration
21InAppMessagingFeature.requestSdk { inAppMessagingFeatureModule ->
22  inAppMessagingFeatureModule.getInAppMessageManager().setInAppMessageListener(...)
23}

Use this code to register an event listener in version 10 of the SDK for Android.

1MarketingCloudSdk.requestSdk { engagementSdk ->
2  engagementSdk.inAppMessageManager.setInAppMessageListener(object :
3      InAppMessageManager.EventListener {
4      override fun shouldShowMessage(message: InAppMessage): Boolean {
5          return if (shouldShowMessage /* Your Custom logic confirming to show in-app message */) {
6              true
7          } else {
8              // Store message id for later
9              val blockedMessageId = message.id
10              false
11          }
12      }
13      override fun didShowMessage(message: InAppMessage) = Unit
14      override fun didCloseMessage(message: InAppMessage) = Unit
15  })
16}

Use this code to register an event listener in version 8 of the SDK for Android.

1SFMCSdk.requestSdk { sdk ->
2  sdk.mp {
3    it.inAppMessageManager.setInAppMessageListener(object : InAppMessageManager.EventListener {
4      override fun shouldShowMessage(message: InAppMessage): Boolean {
5        return if (shouldShowMessage /* Your Custom logic confirming to show in-app message */) {
6          true
7        } else {
8          // Store message id for later
9          val blockedMessageId = message.id
10          false
11        }
12      }
13      override fun didShowMessage(message: InAppMessage) = Unit
14      override fun didCloseMessage(message: InAppMessage) = Unit
15    })
16  }
17}

Use this code to register an event listener in version 7 of the SDK for Android.

1MarketingCloudSdk.requestSdk { sdk ->
2  sdk.inAppMessageManager.setInAppMessageListener(object : InAppMessageManager.EventListener {
3
4    override fun shouldShowMessage(message: InAppMessage): Boolean {
5
6      return if (shouldShowMessage /* Your Custom logic confirming to show in-app message */) {
7        true
8      } else {
9        // Store message id for later
10        val blockedMessageId = message.id()
11        false
12      }
13    }
14
15    override fun didShowMessage(message: InAppMessage) = Unit
16    override fun didCloseMessage(message: InAppMessage) = Unit
17  })
18}