
## 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-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 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-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
Injector.setOnInAppListener(listener);
```

</div>

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

```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-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 removeInAppListener()
```

</div>
</div>


**Parameters:**  
No parameters.

**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.removeInAppListener();
```

</div>

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

```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-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><button class="tab-button" data-tab-id="tabgrp-732-1" data-tab-group="tabgrp-732">kotlin</button></div>

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

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

</div>

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

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

</div>
</div>


## Set Inline In-App listener
---
Sets the global listener for inline in-app message events.
**Method name:**  
Injector.setOnInlineInAppListener(OnInlineInAppListener listener)
  
**Declaration:**  

<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></div>

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

```java
public static void setOnInlineInAppListener(OnInlineInAppListener listener)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **listener** | OnInlineInAppListener | yes | - | Listener for inline in-app message events |

**Return Value:**  
No value returned.

**Example:**  

<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><button class="tab-button" data-tab-id="tabgrp-734-1" data-tab-group="tabgrp-734">kotlin</button></div>

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

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

</div>

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

```kotlin
Injector.setOnInlineInAppListener(listener)
```

</div>
</div>
 

## Remove Inline In-App listener
---
Removes the global inline in-app message listener from injector.
**Method name:**  
Injector.removeInlineInAppListener()
  
**Declaration:**  

<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></div>

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

```java
public static void removeInlineInAppListener()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No value returned.

**Example:**  

<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><button class="tab-button" data-tab-id="tabgrp-736-1" data-tab-group="tabgrp-736">kotlin</button></div>

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

```java
Injector.removeInlineInAppListener();
```

</div>

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

```kotlin
Injector.removeInlineInAppListener()
```

</div>
</div>


## Create Inline In-App view
---
Creates an inline in-app message view for a given placement key. The returned view must be embedded into the app's view hierarchy by the application.
**Method name:**  
Injector.createInlineInAppView(Context context, String placementKey)
  
**Declaration:**  

<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></div>

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

```java
public static InlineInAppView createInlineInAppView(Context context, String placementKey)
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **context** | Context | yes | - | Android context |
| **placementKey** | String | yes | - | Identifier of the placement configured in the Synerise platform |

**Return Value:**  
`InlineInAppView` object.

**Example:**  

<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><button class="tab-button" data-tab-id="tabgrp-738-1" data-tab-group="tabgrp-738">kotlin</button></div>

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

```java
InlineInAppView inlineView = Injector.createInlineInAppView(context, "home_top_banner");
```

</div>

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

```kotlin
val inlineView = Injector.createInlineInAppView(context, "home_top_banner")
```

</div>
</div>


## Notify In-App context change
---
Notifies all active in-app message components that the global context has changed. After this call, the SDK invokes `SRInApp.onContextFromApp(context)` in each active in-app message.
**Method name:**  
Injector.notifyInAppContextChange()
  
**Declaration:**  

<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></div>

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

```java
public static void notifyInAppContextChange()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No value returned.

**Example:**  

<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><button class="tab-button" data-tab-id="tabgrp-740-1" data-tab-group="tabgrp-740">kotlin</button></div>

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

```java
Injector.inAppContext = context;
Injector.notifyInAppContextChange();
```

</div>

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

```kotlin
Injector.inAppContext = context
Injector.notifyInAppContextChange()
```

</div>
</div>


## Get Inline In-App view identifier
---
Returns the free-form identifier attached to this view by the application. Not used by the SDK.
**Method name:**  
InlineInAppView.getIdentifier()
  
**Declaration:**  

<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></div>

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

```java
public String getIdentifier()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
`String` identifier or `null`.

**Example:**  

<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><button class="tab-button" data-tab-id="tabgrp-742-1" data-tab-group="tabgrp-742">kotlin</button></div>

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

```java
String identifier = inlineView.getIdentifier();
```

</div>

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

```kotlin
val identifier = inlineView.getIdentifier()
```

</div>
</div>


## Set Inline In-App view identifier
---
Sets a free-form identifier on the view. The identifier is not used by the SDK — it exists so the application can tell multiple `InlineInAppView` instances apart.
**Method name:**  
InlineInAppView.setIdentifier(String)
  
**Declaration:**  

<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></div>

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

```java
public void setIdentifier(String identifier)
```

</div>
</div>


**Parameters:**  

| Parameter | Type | Description |
|---|---|---|
| **identifier** | String | A free-form identifier for this view |

**Return Value:**  
No value returned.

**Example:**  

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

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

```java
inlineView.setIdentifier("home_top");
```

</div>

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

```kotlin
inlineView.setIdentifier("home_top")
```

</div>
</div>


## Check if Inline In-App view is rendered
---
Returns whether an inline in-app message campaign is currently rendered in this view.
**Method name:**  
InlineInAppView.isRendered()
  
**Declaration:**  

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

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

```java
public boolean isRendered()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
`true` if a campaign is currently rendered in this view, `false` otherwise.

**Example:**  

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

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

```java
boolean rendered = inlineView.isRendered();
```

</div>

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

```kotlin
val rendered = inlineView.isRendered()
```

</div>
</div>


## Get Inline In-App view placement key
---
Returns the placement key this view is bound to.
**Method name:**  
InlineInAppView.getPlacementKey()
  
**Declaration:**  

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

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

```java
public String getPlacementKey()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
`String` — the placement key this view is bound to, or `null` if none was set.

**Example:**  

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

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

```java
String placementKey = inlineView.getPlacementKey();
```

</div>

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

```kotlin
val placementKey = inlineView.getPlacementKey()
```

</div>
</div>


## Render Inline In-App view
---
Triggers on-demand rendering of content in an inline in-app view. Use this method when the campaign trigger type is set to "on demand".
**Method name:**  
InlineInAppView.render()
  
**Declaration:**  

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

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

```java
public void render()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No value returned.

**Example:**  

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

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

```java
inlineView.render();
```

</div>

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

```kotlin
inlineView.render()
```

</div>
</div>


## Get Inline In-App view data
---
Returns the data of the currently loaded inline in-app message campaign.
**Method name:**  
InlineInAppView.getData()
  
**Declaration:**  

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

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

```java
public InlineInAppMessageData getData()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
`InlineInAppMessageData` object or `null`.

**Example:**  

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

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

```java
InlineInAppMessageData data = inlineView.getData();
```

</div>

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

```kotlin
val data = inlineView.getData()
```

</div>
</div>


## Release Inline In-App view
---
Releases the resources held by the inline in-app view, including the WebView and campaign state, and unregisters the component from the SDK. Call this method before removing the view from the hierarchy.
**Method name:**  
InlineInAppView.release()
  
**Declaration:**  

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

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

```java
public void release()
```

</div>
</div>


**Parameters:**  
No parameters.

**Return Value:**  
No value returned.

**Example:**  

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

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

```java
inlineView.release();
ViewGroup parent = (ViewGroup) inlineView.getParent();
if (parent != null) {
    parent.removeView(inlineView);
}
inlineView = null;
```

</div>

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

```kotlin
inlineView?.release()
(inlineView?.parent as? ViewGroup)?.removeView(inlineView)
inlineView = null
```

</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-755">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-755-0" data-tab-group="tabgrp-755" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-755-1" data-tab-group="tabgrp-755">Kotlin</button></div>

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

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

</div>

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

```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-756">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-756-0" data-tab-group="tabgrp-756" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-756-1" data-tab-group="tabgrp-756">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-756-0" data-tab-group="tabgrp-756" 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-756-1" data-tab-group="tabgrp-756">

```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-757">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-757-0" data-tab-group="tabgrp-757" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-757-1" data-tab-group="tabgrp-757">Kotlin</button></div>

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

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

</div>

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

```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-758">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-758-0" data-tab-group="tabgrp-758" data-tab-active="true">Java</button><button class="tab-button" data-tab-id="tabgrp-758-1" data-tab-group="tabgrp-758">Kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-758-0" data-tab-group="tabgrp-758" 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-758-1" data-tab-group="tabgrp-758">

```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-759">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-759-0" data-tab-group="tabgrp-759" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-759-0" data-tab-group="tabgrp-759" 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-760">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-760-0" data-tab-group="tabgrp-760" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-760-1" data-tab-group="tabgrp-760">kotlin</button></div>

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

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

</div>

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

```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-761">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-761-0" data-tab-group="tabgrp-761" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-761-0" data-tab-group="tabgrp-761" 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-762">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-762-0" data-tab-group="tabgrp-762" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-762-1" data-tab-group="tabgrp-762">kotlin</button></div>

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

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

</div>

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

```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-763">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-763-0" data-tab-group="tabgrp-763" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-763-0" data-tab-group="tabgrp-763" 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-764">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-764-0" data-tab-group="tabgrp-764" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-764-1" data-tab-group="tabgrp-764">kotlin</button></div>

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

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

</div>

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

```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-765">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-765-0" data-tab-group="tabgrp-765" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-765-0" data-tab-group="tabgrp-765" 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-766">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-766-0" data-tab-group="tabgrp-766" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-766-1" data-tab-group="tabgrp-766">kotlin</button></div>

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

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

</div>

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

```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-767">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-767-0" data-tab-group="tabgrp-767" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-767-0" data-tab-group="tabgrp-767" 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-768">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-768-0" data-tab-group="tabgrp-768" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-768-1" data-tab-group="tabgrp-768">kotlin</button></div>

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

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

</div>

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

```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-769">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-769-0" data-tab-group="tabgrp-769" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-769-0" data-tab-group="tabgrp-769" 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-770">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-770-0" data-tab-group="tabgrp-770" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-770-1" data-tab-group="tabgrp-770">kotlin</button></div>

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

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

</div>

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

```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-771">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-771-0" data-tab-group="tabgrp-771" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-771-0" data-tab-group="tabgrp-771" 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-772">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-772-0" data-tab-group="tabgrp-772" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-772-1" data-tab-group="tabgrp-772">kotlin</button></div>

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

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

</div>

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

```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-773">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-773-0" data-tab-group="tabgrp-773" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-773-0" data-tab-group="tabgrp-773" 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-774">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-774-0" data-tab-group="tabgrp-774" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-774-1" data-tab-group="tabgrp-774">kotlin</button></div>

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

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

</div>

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

```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-775">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-775-0" data-tab-group="tabgrp-775" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-775-0" data-tab-group="tabgrp-775" 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-776">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-776-0" data-tab-group="tabgrp-776" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-776-1" data-tab-group="tabgrp-776">kotlin</button></div>

<div class="tab-panel" data-tab-id="tabgrp-776-0" data-tab-group="tabgrp-776" 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-776-1" data-tab-group="tabgrp-776">

```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-777">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-777-0" data-tab-group="tabgrp-777" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-777-0" data-tab-group="tabgrp-777" 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-778">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-778-0" data-tab-group="tabgrp-778" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-778-1" data-tab-group="tabgrp-778">kotlin</button></div>

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

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

</div>

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

```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-779">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-779-0" data-tab-group="tabgrp-779" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-779-0" data-tab-group="tabgrp-779" 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-780">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-780-0" data-tab-group="tabgrp-780" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-780-1" data-tab-group="tabgrp-780">kotlin</button></div>

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

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

</div>

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

```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-781">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-781-0" data-tab-group="tabgrp-781" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-781-0" data-tab-group="tabgrp-781" 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-782">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-782-0" data-tab-group="tabgrp-782" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-782-1" data-tab-group="tabgrp-782">kotlin</button></div>

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

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

</div>

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

```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-783">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-783-0" data-tab-group="tabgrp-783" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-783-0" data-tab-group="tabgrp-783" 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-784">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-784-0" data-tab-group="tabgrp-784" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-784-1" data-tab-group="tabgrp-784">kotlin</button></div>

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

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

</div>

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

```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-785">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-785-0" data-tab-group="tabgrp-785" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-785-0" data-tab-group="tabgrp-785" 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-786">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-786-0" data-tab-group="tabgrp-786" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-786-1" data-tab-group="tabgrp-786">kotlin</button></div>

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

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

</div>

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

```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-787">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-787-0" data-tab-group="tabgrp-787" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-787-0" data-tab-group="tabgrp-787" 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-788">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-788-0" data-tab-group="tabgrp-788" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-788-1" data-tab-group="tabgrp-788">kotlin</button></div>

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

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

</div>

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

```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-789">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-789-0" data-tab-group="tabgrp-789" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-789-0" data-tab-group="tabgrp-789" 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-790">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-790-0" data-tab-group="tabgrp-790" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-790-1" data-tab-group="tabgrp-790">kotlin</button></div>

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

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

</div>

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

```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-791">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-791-0" data-tab-group="tabgrp-791" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-791-0" data-tab-group="tabgrp-791" 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-792">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-792-0" data-tab-group="tabgrp-792" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-792-1" data-tab-group="tabgrp-792">kotlin</button></div>

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

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

</div>

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

```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-793">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-793-0" data-tab-group="tabgrp-793" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-793-0" data-tab-group="tabgrp-793" 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-794">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-794-0" data-tab-group="tabgrp-794" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-794-1" data-tab-group="tabgrp-794">kotlin</button></div>

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

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

</div>

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

```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-795">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-795-0" data-tab-group="tabgrp-795" data-tab-active="true">java</button></div>

<div class="tab-panel" data-tab-id="tabgrp-795-0" data-tab-group="tabgrp-795" 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-796">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-796-0" data-tab-group="tabgrp-796" data-tab-active="true">java</button><button class="tab-button" data-tab-id="tabgrp-796-1" data-tab-group="tabgrp-796">kotlin</button></div>

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

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

</div>

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

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

</div>
</div>
