
## Set In-App listener
---
Sets inAppListener to injector.
**Method name:**  
Injector.setOnInAppListener(OnInAppListener listener)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-697">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-697-0" data-tab-group="tabgrp-697" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-697-0" data-tab-group="tabgrp-697" data-tab-active="true">

```java
public static void setOnInAppListener(OnInAppListener listener)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **listener** | OnInAppListener | yes | - | Listener |

**Return Value:**  
No value returned.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-698">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-698-0" data-tab-group="tabgrp-698" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-698-1" data-tab-group="tabgrp-698">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-698-0" data-tab-group="tabgrp-698" data-tab-active="true">

```java
Injector.setOnInAppListener(listener);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-698-1" data-tab-group="tabgrp-698">

```kotlin
Injector.setOnInAppListener(listener)
```

</div>
</div>
 

## Remove In-App listener
---
Removes inAppListener from injector.
**Method name:**  
Injector.removeInAppListener()
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-699">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-699-0" data-tab-group="tabgrp-699" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-699-0" data-tab-group="tabgrp-699" data-tab-active="true">

```java
public static void removeInAppListener()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No value returned.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-700">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-700-0" data-tab-group="tabgrp-700" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-700-1" data-tab-group="tabgrp-700">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-700-0" data-tab-group="tabgrp-700" data-tab-active="true">

```java
Injector.removeInAppListener();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-700-1" data-tab-group="tabgrp-700">

```kotlin
Injector.removeInAppListener()
```

</div>
</div>
 

## Close in-app message
---
Closes an in-app message and sends an `inApp.discard` event.  

Usage examples:
- Closing a top bar or bottom bar when the user taps outside the in-app area.
- Automatically dismissing messages when navigating away from a screen.
- Controlling in-app visibility based on app logic for a smoother user experience.

|                                                 | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| ----------------------------------------------- | ----------- | --------------- | -------------------- | --------------- |
| <span style="color:green">Introduced in:</span> | 5.7.0       | 6.7.0           | 1.5.0                 | 2.5.0           |
**Method name:**  
Injector.closeInAppMessage(campaignHash)

**Declaration:**  

<pre><code class="language-java">public static void closeInAppMessage(String campaignHash)</code></pre>


**Parameters:**  
| Parameter        | Type   | Mandatory | Default | Description                              |
| ---------------- | ------ | --------- | ------- | ---------------------------------------- |
| **campaignHash** | string | yes       | -       | Unique identifier of the in-app campaign |

**Return value:**  
No value returned.

**Example**:  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-701">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-701-0" data-tab-group="tabgrp-701" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-701-1" data-tab-group="tabgrp-701">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-701-0" data-tab-group="tabgrp-701" data-tab-active="true">

```java
Injector.closeInAppMessage(campaignHash);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-701-1" data-tab-group="tabgrp-701">

```kotlin
Injector.closeInAppMessage(campaignHash)
```

</div>
</div>


## Register for push notifications
---
This method passes the Firebase Token to Synerise for notifications.


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

- You should call this method every time the user changes the system or application consent for notifications.
- The API key must have the `API_PERSONAL_DEVICE_CLIENT_UPDATE` permission from the **Client** group.
- If the registration fails, the SDK requests a token update again by a listener/delegate method ([Android](/developers/mobile-sdk/listeners-and-delegates/android-listeners#on-register-for-push-listener), [iOS](/developers/mobile-sdk/listeners-and-delegates/ios-delegates#synerise-delegate-register-for-push-notifications-is-needed), [React Native](/developers/mobile-sdk/listeners-and-delegates/react-native-listeners#notifications-listener), [Flutter](/developers/mobile-sdk/listeners-and-delegates/flutter-listeners#notifications-listener)).

</div></div></div>

**Method name:**  
Client.registerForPush(firebaseId, mobilePushAgreement)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-702">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-702-0" data-tab-group="tabgrp-702" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-702-1" data-tab-group="tabgrp-702">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-702-0" data-tab-group="tabgrp-702" data-tab-active="true">

```Java
public static IApiCall registerForPush(@NonNull String firebaseId, boolean mobilePushAgreement)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-702-1" data-tab-group="tabgrp-702">

```Kotlin
fun registerForPush(@NonNull firebaseId:String, mobilePushAgreement:boolean):IApiCall
```

</div>
</div>



<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

This method has a built-in cache mechanism. If you try to post the same data within 24 hours, the call to the backend isn't made.

</div></div></div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **firebaseId** | String | yes | - | FirebaseInstanceId |
| **mobilePushAgreement** | boolean | yes | - | Agreement (consent) for mobile push campaigns |

**Return Value:**  
[IApiCall](/developers/mobile-sdk/method-reference/android/public-interfaces#iapicall) object to execute the request.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-703">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-703-0" data-tab-group="tabgrp-703" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-703-1" data-tab-group="tabgrp-703">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-703-0" data-tab-group="tabgrp-703" data-tab-active="true">

```Java
IApiCall call = Client.registerForPush(refreshedToken, true);
            call.execute(() -> Log.d(TAG, "Register for Push succeed: " + refreshedToken),
                         apiError -> Log.w(TAG, "Register for push failed: " + refreshedToken));
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-703-1" data-tab-group="tabgrp-703">

```Kotlin
val call = Client.registerForPush(refreshedToken, true)
call.execute({ Log.d(TAG, "Register for Push succeed: " + refreshedToken) },
             { apiError-> Log.w(TAG, "Register for push failed: " + refreshedToken) })
```

</div>
</div>


## Register for push notifications without agreement
---
This method passes the Firebase Token to Synerise for notifications and doesn't update the agreement of the profile.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:green">Introduced in:</span> | 4.14.0 | 5.7.1 | 0.15.0 | 1.1.0 |


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The API key must have the `API_PERSONAL_DEVICE_CLIENT_UPDATE` permission from the **Client** group.

</div></div></div>



<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

If the registration fails, the SDK requests a token update again by a listener/delegate method ([Android](/developers/mobile-sdk/listeners-and-delegates/android-listeners#on-register-for-push-listener), [iOS](/developers/mobile-sdk/listeners-and-delegates/ios-delegates#synerise-delegate-register-for-push-notifications-is-needed), [React Native](/developers/mobile-sdk/listeners-and-delegates/react-native-listeners#notifications-listener), [Flutter](/developers/mobile-sdk/listeners-and-delegates/flutter-listeners#notifications-listener)).

</div></div></div>

**Method name:**  
Client.registerForPush(firebaseId)
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-704">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-704-0" data-tab-group="tabgrp-704" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-704-1" data-tab-group="tabgrp-704">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-704-0" data-tab-group="tabgrp-704" data-tab-active="true">

```Java
public static IApiCall registerForPush(@NonNull String firebaseId)
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-704-1" data-tab-group="tabgrp-704">

```Kotlin
fun registerForPush(@NonNull firebaseId:String):IApiCall
```

</div>
</div>



<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

This method has a built-in cache mechanism. If you try to post the same data within 24 hours, the call to the backend isn't made.

</div></div></div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **firebaseId** | String | yes | - | FirebaseInstanceId |

**Return Value:**  
[IApiCall](/developers/mobile-sdk/method-reference/android/public-interfaces#iapicall) object to execute the request.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-705">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-705-0" data-tab-group="tabgrp-705" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-705-1" data-tab-group="tabgrp-705">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-705-0" data-tab-group="tabgrp-705" data-tab-active="true">

```Java
IApiCall call = Client.registerForPush(refreshedToken);
            call.execute(() -> Log.d(TAG, "Register for Push succeed: " + refreshedToken),
                         apiError -> Log.w(TAG, "Register for push failed: " + refreshedToken));
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-705-1" data-tab-group="tabgrp-705">

```Kotlin
val call = Client.registerForPush(refreshedToken)
call.execute({ Log.d(TAG, "Register for Push succeed: " + refreshedToken) },
             { apiError-> Log.w(TAG, "Register for push failed: " + refreshedToken) })
```

</div>
</div>


## Check if push notification is from Synerise
---
This method verifies if a notification was sent by Synerise.
**Method name:**  
Injector.isSynerisePush(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-706">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-706-0" data-tab-group="tabgrp-706" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-706-0" data-tab-group="tabgrp-706" data-tab-active="true">

```java
public static boolean isSynerisePush(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data. The "issuer" key must be set to "Synerise". |


**Return Value:**  
Boolean indicating if the incoming push contains an "issuer" key with the "Synerise" value.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-707">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-707-0" data-tab-group="tabgrp-707" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-707-1" data-tab-group="tabgrp-707">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-707-0" data-tab-group="tabgrp-707" data-tab-active="true">

```java
boolean isSynerisePush = Injector.isSynerisePush(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-707-1" data-tab-group="tabgrp-707">

```kotlin
var isSynerisePush = Injector.isSynerisePush(data)
```

</div>
</div>


## Check if push notification is a Simple Push Campaign
---
This method verifies if a notification’s sender is Synerise and if the notification is a Simple Push campaign
**Method name:**  
Injector.isSyneriseSimplePush(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-708">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-708-0" data-tab-group="tabgrp-708" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-708-0" data-tab-group="tabgrp-708" data-tab-active="true">

```java
public static boolean isSyneriseSimplePush(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data. The "issuer" key must be set to "Synerise". |


**Return Value:**  
Boolean indicating if the incoming push contains a "content-type" key with the "simple-push" value.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-709">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-709-0" data-tab-group="tabgrp-709" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-709-1" data-tab-group="tabgrp-709">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-709-0" data-tab-group="tabgrp-709" data-tab-active="true">

```java
boolean isSyneriseSimplePush = Injector.isSyneriseSimplePush(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-709-1" data-tab-group="tabgrp-709">

```kotlin
var isSyneriseSimplePush = Injector.isSyneriseSimplePush(data)
```

</div>
</div>


## Check if push notification is a Silent Command
---
This method verifies if a notification’s sender is Synerise and if the notification is a Silent Command.
**Method name:**  
Injector.isSilentCommand(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-710">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-710-0" data-tab-group="tabgrp-710" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-710-0" data-tab-group="tabgrp-710" data-tab-active="true">

```java
public static boolean isSilentCommand(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data. The "issuer" key must be set to "Synerise". |


**Return Value:**  
Boolean indicating if the incoming push contains a "content-type" key with the "silent-command" value.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-711">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-711-0" data-tab-group="tabgrp-711" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-711-1" data-tab-group="tabgrp-711">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-711-0" data-tab-group="tabgrp-711" data-tab-active="true">

```java
boolean isSilentCommand = Injector.isSilentCommand(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-711-1" data-tab-group="tabgrp-711">

```kotlin
var isSilentCommand = Injector.isSilentCommand(data)
```

</div>
</div>


## Get a Silent Command
---
Method that converts push payload into a SilentCommand object.
**Method name:**  
Injector.getSilentCommand(payload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-712">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-712-0" data-tab-group="tabgrp-712" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-712-0" data-tab-group="tabgrp-712" data-tab-active="true">

```java
public static SilentCommand getSilentCommand(Map<String, String> payload) throws ValidationException
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **payload** | Map<String, String> | yes | - |  payload received from push |


**Return Value:**  
[SilentCommand](/developers/mobile-sdk/class-reference/android/campaigns#silentcommand) object, may be null if the payload is not a `SilentCommand` payload.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-713">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-713-0" data-tab-group="tabgrp-713" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-713-1" data-tab-group="tabgrp-713">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-713-0" data-tab-group="tabgrp-713" data-tab-active="true">

```java
SilentCommand silentCommand = Injector.getSilentCommand(payload);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-713-1" data-tab-group="tabgrp-713">

```kotlin
var silentCommand = Injector.getSilentCommand(payload)
```

</div>
</div>


## Check if push notification is a Silent SDK Command
---
This method verifies if a notification's sender is Synerise and if the notification is a Silent SDK Command.
**Method name:**  
Injector.isSilentCommandSdk(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-714">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-714-0" data-tab-group="tabgrp-714" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-714-0" data-tab-group="tabgrp-714" data-tab-active="true">

```java
public static boolean isSilentCommandSdk(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data. The "issuer" key must be set to "Synerise". |


**Return Value:**  
Boolean indicating if the incoming push contains a "content-type" key with the "silent-sdk-command" value.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-715">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-715-0" data-tab-group="tabgrp-715" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-715-1" data-tab-group="tabgrp-715">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-715-0" data-tab-group="tabgrp-715" data-tab-active="true">

```java
boolean isSilentCommandSdk = Injector.isSilentCommandSdk(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-715-1" data-tab-group="tabgrp-715">

```kotlin
var isSilentCommandSdk = Injector.isSilentCommandSdk(data)
```

</div>
</div>


## Check if push notification is encrypted
---
This method verifies if a notification is encrypted.
**Method name:**  
Injector.isPushEncrypted(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-716">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-716-0" data-tab-group="tabgrp-716" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-716-0" data-tab-group="tabgrp-716" data-tab-active="true">

```java
public static boolean isPushEncrypted(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data |


**Return Value:**  
Boolean indicating if the incoming push is encrypted by Synerise.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-717">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-717-0" data-tab-group="tabgrp-717" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-717-1" data-tab-group="tabgrp-717">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-717-0" data-tab-group="tabgrp-717" data-tab-active="true">

```java
boolean isPushEncrypted = Injector.isPushEncrypted(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-717-1" data-tab-group="tabgrp-717">

```kotlin
var isPushEncrypted = Injector.isPushEncrypted(data)
```

</div>
</div>


## Decrypt push notification
---
This method decrypts the notification payload.
  

<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

If the notification is not encrypted, the method returns the raw payload.

</div></div></div>
  
  

<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

If a notification is not decrypted successfully, the method returns nil.

</div></div></div>

**Method name:**  
Injector.decryptPushPayload(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-718">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-718-0" data-tab-group="tabgrp-718" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-718-0" data-tab-group="tabgrp-718" data-tab-active="true">

```java
public static Map<String, String> decryptPushPayload(Map<String, String> pushPayload) throws DecryptionException
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data |


**Return Value:**  
Key-Value map of data with the decrypted push.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-719">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-719-0" data-tab-group="tabgrp-719" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-719-1" data-tab-group="tabgrp-719">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-719-0" data-tab-group="tabgrp-719" data-tab-active="true">

```java
Injector.decryptPushPayload(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-719-1" data-tab-group="tabgrp-719">

```kotlin
Injector.decryptPushPayload(data)
```

</div>
</div>


## Handle Synerise push notification
---
This method handles a notification payload and starts activity.

<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

It is recommended to call this method from your `FirebaseMessagingService` subclass within the `onMessageReceived(RemoteMessage)` method.

</div></div></div>

  
**Method name:**  
Injector.handlePushPayload(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-720">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-720-0" data-tab-group="tabgrp-720" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-720-0" data-tab-group="tabgrp-720" data-tab-active="true">

```java
public static boolean handlePushPayload(Bundle bundle)
public static boolean handlePushPayload(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **bundle** | Bundle | yes | - | Bundle of data. Key "issuer" must be set to "Synerise". |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data. The "issuer" key must be set to "Synerise". |


**Return Value:**  
Boolean indicating if the incoming push contains an "issuer" key with the value "Synerise".

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-721">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-721-0" data-tab-group="tabgrp-721" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-721-1" data-tab-group="tabgrp-721">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-721-0" data-tab-group="tabgrp-721" data-tab-active="true">

```java
boolean isSynerisePush = Injector.handlePushPayload(getIntent().getExtras());
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-721-1" data-tab-group="tabgrp-721">

```kotlin
var isSynerisePush = Injector.handlePushPayload(getIntent().getExtras())
```

</div>
</div>


## Get pushes
---
This method fetches Push Notifications set for mobile campaigns.

| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | n/a | n/a |


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The API key must have the `CAMPAIGN_BACKEND_COLLECTOR_READ` permission from the **Collector** group.

</div></div></div>

**Method name:**  
Injector.getPushes();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-722">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-722-0" data-tab-group="tabgrp-722" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-722-0" data-tab-group="tabgrp-722" data-tab-active="true">

```java
public static IDataApiCall<List<SynerisePushResponse>> getPushes()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
[IDataApiCall](/developers/mobile-sdk/method-reference/android/public-interfaces#idataapicall)<List<[SynerisePushResponse](/developers/mobile-sdk/class-reference/android/campaigns#synerisepushresponse)>> with a parameterized list of SynerisePushResponse to execute a request.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-723">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-723-0" data-tab-group="tabgrp-723" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-723-1" data-tab-group="tabgrp-723">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-723-0" data-tab-group="tabgrp-723" data-tab-active="true">

```java
IDataApiCall<List<SynerisePushResponse>> apiCall = Injector.getPushes();
        apiCall.execute(this::success, this::showAlertError);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-723-1" data-tab-group="tabgrp-723">

```kotlin
val apiCall = Injector.getPushes()
apiCall.execute(({ this.success() }), ({ this.showAlertError() }))
```

</div>
</div>


## Removed methods

### <del>Check if push notification is a Banner Campaign</del> {#check-if-push-notification-is-a-banner-campaign}
---
This method verifies if a notification’s sender is Synerise and if the notification is a Banner campaign.

| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | 1.0.0 | n/a |
**Method name:**  
Injector.isSyneriseBanner(pushPayload);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-724">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-724-0" data-tab-group="tabgrp-724" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-724-0" data-tab-group="tabgrp-724" data-tab-active="true">

```java
public static boolean isSyneriseBanner(Map<String, String> pushPayload)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **pushPayload** | Map<String, String> | yes | - | Key-Value map of data. The "issuer" key must be set to "Synerise". |


**Return Value:**  
Boolean indicating if the incoming push contains a "content-type" key with the "template-banner" value.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-725">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-725-0" data-tab-group="tabgrp-725" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-725-1" data-tab-group="tabgrp-725">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-725-0" data-tab-group="tabgrp-725" data-tab-active="true">

```java
boolean isSyneriseBanner = Injector.isSyneriseBanner(data);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-725-1" data-tab-group="tabgrp-725">

```kotlin
var isSyneriseBanner = Injector.isSyneriseBanner(data)
```

</div>
</div>


### <del>Fetch Banners</del> {#fetch-banners}
---
This method fetches banners set for mobile campaigns and caches the valid ones.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 4.6.0 | 4.7.0 | 0.12.0 | n/a |
**Method name:**  
Injector.fetchBanners(successListener, errorListener);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-726">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-726-0" data-tab-group="tabgrp-726" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-726-0" data-tab-group="tabgrp-726" data-tab-active="true">

```java
public static void fetchBanners()
public static void fetchBanners(@NonNull final DataActionListener<List<TemplateBanner>> successListener,
                                    @NonNull final DataActionListener<ApiError> errorListener)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **successListener** | DataActionListener<List<[TemplateBanner](/developers/mobile-sdk/class-reference/android/campaigns#templatebanner)>> | yes | - | Success data callback with valid banners. |
| **errorListener** | DataActionListener<[ApiError](/developers/mobile-sdk/class-reference/android/miscellaneous#apierror)> | yes | - | Error callback with an ApiError instance. |



**Return Value:**  
No value is returned.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-727">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-727-0" data-tab-group="tabgrp-727" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-727-1" data-tab-group="tabgrp-727">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-727-0" data-tab-group="tabgrp-727" data-tab-active="true">

```java
Injector.fetchBanners();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-727-1" data-tab-group="tabgrp-727">

```kotlin
Injector.fetchBanners();
```

</div>
</div>


### <del>Get Banners</del> {#get-banners}
---
This method provides valid banners directly from SDK cache.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 4.6.0 | 4.7.0 | 0.12.0 | n/a |
**Method name:**  
Injector.getBanners();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-728">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-728-0" data-tab-group="tabgrp-728" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-728-0" data-tab-group="tabgrp-728" data-tab-active="true">

```java
public static List<TemplateBanner> getBanners()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
List<[TemplateBanner](/developers/mobile-sdk/class-reference/android/campaigns#templatebanner)> of cached banners.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-729">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-729-0" data-tab-group="tabgrp-729" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-729-1" data-tab-group="tabgrp-729">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-729-0" data-tab-group="tabgrp-729" data-tab-active="true">

```java
List<TemplateBanner> bannerList = Injector.getBanners();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-729-1" data-tab-group="tabgrp-729">

```kotlin
var bannerList = Injector.getBanners()
```

</div>
</div>


### <del>Show Banner</del> {#show-banner}
---
This method shows a banner immediately.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 4.6.0 | 4.7.0 | 0.12.0 | - |
**Method name:**  
Injector.showBanner(banner, markPresented);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-730">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-730-0" data-tab-group="tabgrp-730" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-730-0" data-tab-group="tabgrp-730" data-tab-active="true">

```java
public static void showBanner(TemplateBanner banner, boolean markPresented)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **banner** | [TemplateBanner](/developers/mobile-sdk/class-reference/android/campaigns#templatebanner) | yes | - | Banner to display |
| **markPresented** | boolean | yes | - | Flag indicating if the banner should be marked as presented and not be presented the next time |

**Return Value:**  
No value returned.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-731">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-731-0" data-tab-group="tabgrp-731" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-731-1" data-tab-group="tabgrp-731">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-731-0" data-tab-group="tabgrp-731" data-tab-active="true">

```java
Injector.showBanner(banner, markPresented);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-731-1" data-tab-group="tabgrp-731">

```kotlin
Injector.showBanner(banner, markPresented)
```

</div>
</div>


### <del>Get Walkthrough</del> {#get-walkthrough}
---
This method fetches a walkthrough.

| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | 1.0.0 | 2.0.0 |


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The API key must have the `CAMPAIGN_BACKEND_CAMPAIGN_READ` permission from the **Campaign** group.

</div></div></div>


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

To receive callbacks properly, this method should be called after `Injector.setOnWalkthroughListener(OnWalkthroughListener)`.

</div></div></div>

  
**Method name:**  
Injector.getWalkthrough();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-732">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-732-0" data-tab-group="tabgrp-732" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-732-0" data-tab-group="tabgrp-732" data-tab-active="true">

```java
public static void getWalkthrough()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No return value.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-733">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-733-0" data-tab-group="tabgrp-733" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-733-1" data-tab-group="tabgrp-733">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-733-0" data-tab-group="tabgrp-733" data-tab-active="true">

```java
Injector.getWalkthrough();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-733-1" data-tab-group="tabgrp-733">

```kotlin
Injector.getWalkthrough()
```

</div>
</div>


### <del>Show Walkthrough</del> {#show-walkthrough}
---
This method shows a walkthrough when it is loaded.

| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | 1.0.0 | 2.0.0 |
**Method name:**  
Injector.showWalkthrough();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-734">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-734-0" data-tab-group="tabgrp-734" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-734-0" data-tab-group="tabgrp-734" data-tab-active="true">

```java
public static boolean showWalkthrough()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
Boolean value is returned. `true` if the loaded or cached Walkthrough was presented, `false` otherwise.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-735">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-735-0" data-tab-group="tabgrp-735" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-735-1" data-tab-group="tabgrp-735">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-735-0" data-tab-group="tabgrp-735" data-tab-active="true">

```java
Injector.showWalkthrough();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-735-1" data-tab-group="tabgrp-735">

```kotlin
Injector.showWalkthrough()
```

</div>
</div>


### <del>Check if Walkthrough is loaded</del> {#check-if-walkthrough-is-loaded}
---
This method checks if a walkthrough is loaded.

| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | 1.0.0 | 2.0.0 |
**Method name:**  
Injector.isWalkthroughLoaded();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-736">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-736-0" data-tab-group="tabgrp-736" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-736-0" data-tab-group="tabgrp-736" data-tab-active="true">

```java
public static boolean isWalkthroughLoaded()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
Boolean value is returned. `true` if Walkthrough is already loaded, `false` otherwise.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-737">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-737-0" data-tab-group="tabgrp-737" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-737-1" data-tab-group="tabgrp-737">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-737-0" data-tab-group="tabgrp-737" data-tab-active="true">

```java
Boolean isWalkthroughLoaded = Injector.isWalkthroughLoaded();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-737-1" data-tab-group="tabgrp-737">

```kotlin
var isWalkthroughLoaded = Injector.isWalkthroughLoaded()
```

</div>
</div>


### <del>Check if loaded Walkthrough is unique</del> {#check-if-loaded-walkthrough-is-unique}
---
This method checks if the walkthrough is unique compared to the previous one.

| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | 5.0.0 | 6.0.0 | 1.0.0 | 2.0.0 |
**Method name:**  
Injector.isLoadedWalkthroughUnique();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-738">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-738-0" data-tab-group="tabgrp-738" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-738-0" data-tab-group="tabgrp-738" data-tab-active="true">

```java
public static boolean isLoadedWalkthroughUnique()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
Returns `true` if the loaded Walkthrough is loaded and different than previously presented, `false` otherwise.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-739">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-739-0" data-tab-group="tabgrp-739" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-739-1" data-tab-group="tabgrp-739">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-739-0" data-tab-group="tabgrp-739" data-tab-active="true">

```java
Boolean isWalkthroughLoadedUnique = Injector.isLoadedWalkthroughUnique();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-739-1" data-tab-group="tabgrp-739">

```kotlin
var isWalkthroughLoadedUnique = Injector.isLoadedWalkthroughUnique()
```

</div>
</div>


### <del>Set Banner listener</del> {#set-banner-listener}
---
Set your own banner listener to receive optional callbacks.  
Instantiate `OnBannerListener` and override the desired callbacks.
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | n/a | 6.0.0 | n/a | n/a |

**Method name:**  
Injector.setOnBannerListener(banner, markPresented);
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-740">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-740-0" data-tab-group="tabgrp-740" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-740-0" data-tab-group="tabgrp-740" data-tab-active="true">

```java
public static void setOnBannerListener(OnBannerListener listener)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **listener** | OnBannerListener | yes | - | Listener |

**Return Value:**  
No value returned.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-741">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-741-0" data-tab-group="tabgrp-741" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-741-1" data-tab-group="tabgrp-741">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-741-0" data-tab-group="tabgrp-741" data-tab-active="true">

```java
Injector.setOnBannerListener(listener);
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-741-1" data-tab-group="tabgrp-741">

```kotlin
Injector.setOnBannerListener(listener)
```

</div>
</div>


### <del>Remove Banner listener</del> {#remove-banner-listener}
---
Remove banner listener to stop receiving callbacks.  
It is recommended to call this method when your Activity is stopped.
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:red">Removed in:</span> | n/a | 6.0.0 | n/a | n/a |

**Method name:**  
Injector.removeBannerListener();
  
**Declaration:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-742">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-742-0" data-tab-group="tabgrp-742" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-742-0" data-tab-group="tabgrp-742" data-tab-active="true">

```java
public static void removeBannerListener()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No value returned.

**Example:**  

<div class="content-tabs code-tabs" data-tab-group="tabgrp-743">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-743-0" data-tab-group="tabgrp-743" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-743-1" data-tab-group="tabgrp-743">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-743-0" data-tab-group="tabgrp-743" data-tab-active="true">

```java
Injector.removeBannerListener();
```

</div>

<div class="tab-panel" data-tab-id="tabgrp-743-1" data-tab-group="tabgrp-743">

```kotlin
Injector.removeBannerListener()
```

</div>
</div>
