# iOS delegates

## SyneriseDelegate {id=synerise-delegate}
A delegate to handle the SDK lifecycle events.
  
To set your object as delegate, you must use [this method](/developers/mobile-sdk/method-reference/ios/lifecycle#set-synerise-delegate).


<div class="content-tabs code-tabs" data-tab-group="tabgrp-650">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-650-0" data-tab-group="tabgrp-650" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-650-1" data-tab-group="tabgrp-650">Objective-C</button></div>

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

```Swift
Synerise.setDelegate(YOUR_OBJECT)
```

</div>

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

```Objective-C
[SNRSynerise setDelegate:YOUR_OBJECT];
```

</div>
</div>



<div class="admonition admonition-important"><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="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

If optional methods for handling URL and deeplink are not implemented, SDK has a default behavior.

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


#### snr_initialized() {id=synerise-delegate-initialized}

This method is called when the Synerise SDK is initialized.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-651">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-651-0" data-tab-group="tabgrp-651" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-651-1" data-tab-group="tabgrp-651">Objective-C</button></div>

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

```Swift
func snr_initialized() -> Void
```

</div>

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

```Objective-C
- (void)SNR_initialized
```

</div>
</div>


#### snr_initializationError(error: Error) {id=synerise-delegate-initialization-error}

This method is called when an error occurs while initializing the Synerise SDK.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-652">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-652-0" data-tab-group="tabgrp-652" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-652-1" data-tab-group="tabgrp-652">Objective-C</button></div>

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

```Swift
func snr_initializationError(error: Error) -> Void
```

</div>

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

```Objective-C
- (void)SNR_initializationError:(NSError *)error
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **error** | NSError | The error that occurred. |

#### snr_registerForPushNotificationsIsNeeded() {id=synerise-delegate-register-for-push-notifications-is-needed}

This method is called when Synerise needs registration for push notifications.
  
See [Configuring push notifications](/developers/mobile-sdk/configuring-push-notifications/ios) for more details.


<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">

After invoking this method, you must invoke the [Client.registerForPush(registrationToken:mobilePushAgreement:success:failure:)](/developers/mobile-sdk/method-reference/ios/campaigns#register-for-push-notifications) method again.

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

This method is invoked when the **snr_registerForPushNotificationsIsNeeded(origin:)** method is not implemented.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-653">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-653-0" data-tab-group="tabgrp-653" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-653-1" data-tab-group="tabgrp-653">Objective-C</button></div>

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

```Swift
func snr_registerForPushNotificationsIsNeeded() -> Void
```

</div>

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

```Objective-C
- (void)SNR_registerForPushNotificationsIsNeeded
```

</div>
</div>


#### snr_registerForPushNotificationsIsNeeded(origin: PushNotificationsRegistrationOrigin) {id=synerise-delegate-register-for-push-notifications-is-needed-by-origin}

This method is called when Synerise needs registration for push notifications.
  
See [Configuring push notifications](/developers/mobile-sdk/configuring-push-notifications/ios) for more details.


<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">

After invoking this method, you must invoke the [Client.registerForPush(registrationToken:mobilePushAgreement:success:failure:)](/developers/mobile-sdk/method-reference/ios/campaigns#register-for-push-notifications) method again.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-654">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-654-0" data-tab-group="tabgrp-654" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-654-1" data-tab-group="tabgrp-654">Objective-C</button></div>

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

```Swift
func snr_registerForPushNotificationsIsNeeded(origin: PushNotificationsRegistrationOrigin) -> Void
```

</div>

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

```Objective-C
- (void)SNR_registerForPushNotificationsIsNeededByOrigin:(SNRPushNotificationsRegistrationOrigin)origin
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **origin** | [PushNotificationsRegistrationOrigin](/developers/mobile-sdk/class-reference/ios/campaigns#pushnotificationsregistrationorigin) | Origin of the push notifications registration from the SDK. |

#### snr_handledAction(url: URL) {id=snr-handled-url-action}

This method is called when Synerise handles URL action from campaign activities.


<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 is invoked when the **snr_handledAction(url:source:)** method is not implemented.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-655">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-655-0" data-tab-group="tabgrp-655" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-655-1" data-tab-group="tabgrp-655">Objective-C</button></div>

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

```Swift
func snr_handledAction(url: URL) -> Void
```

</div>

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

```Objective-C
- (void)SNR_handledActionWithURL:(NSURL *)url
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **url** | NSURL | URL value from the action of the activity. |

#### snr_handledAction(url: URL, source: SyneriseSource) {id=snr-handled-url-action-advanced-with-parameters}

This method is called when Synerise handles URL action from campaign activities.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-656">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-656-0" data-tab-group="tabgrp-656" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-656-1" data-tab-group="tabgrp-656">Objective-C</button></div>

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

```Swift
func snr_handledAction(url: URL, source: SyneriseSource) -> Void
```

</div>

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

```Objective-C
- (void)SNR_handledActionWithURL:(NSURL *)url source:(SNRSyneriseSource)source
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **url** | NSURL | URL value from the action of the activity. |
| **source** | [SyneriseSource](/developers/mobile-sdk/class-reference/ios/campaigns#synerisesource) | Identifies Synerise campaign source ([SyneriseSource](/developers/mobile-sdk/class-reference/ios/campaigns#synerisesource)). |

#### snr_handledAction(url: URL, activity: SyneriseActivity, completionHandler: SyneriseActivityCompletionHandler) {id=snr-handled-url-action-advanced-with-parameters-deprecated}

This method is called when Synerise handles URL action from campaign activities.


<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 was deprecated in SDK version 5.0.0.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-657">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-657-0" data-tab-group="tabgrp-657" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-657-1" data-tab-group="tabgrp-657">Objective-C</button></div>

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

```Swift
func snr_handledAction(url: URL, activity: SyneriseActivity, completionHandler: SyneriseActivityCompletionHandler) -> Void
```

</div>

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

```Objective-C
- (void)SNR_handledActionWithURL:(NSURL *)url activity:(SNRSyneriseActivity)activity completionHandler:(SNRSyneriseActivityCompletionHandler)completionHandler
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **url** | NSURL | URL value from the action of the activity. |
| **activity** | [SyneriseActivity](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivity) | Identifies Synerise campaign activity ([SyneriseActivity](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivity)). |
| **completionHandler** | [SyneriseActivityAction](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivityaction) | A block/closure that should be invoked with [SyneriseActivityAction](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivityaction) parameters and a completion block to execute. |

#### snr_handledAction(deepLink: String) {id=snr-handled-deeplink-action}

This method is called when Synerise handles deeplink action from campaign activities.  


<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 is invoked when the **snr_handledAction(deepLink:source:)** method is not implemented.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-658">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-658-0" data-tab-group="tabgrp-658" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-658-1" data-tab-group="tabgrp-658">Objective-C</button></div>

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

```Swift
func snr_handledAction(deepLink: String) -> Void
```

</div>

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

```Objective-C
- (void)SNR_handledActionWithDeepLink:(NSString *)deepLink
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **deepLink** | String | Deep link value from the action of the activity. |

#### snr_handledAction(deepLink: String, source: SyneriseSource) {id=snr-handled-deeplink-action-advanced-with-parameters}

This method is called when Synerise handles deeplink action from campaign activities.


<div class="content-tabs code-tabs" data-tab-group="tabgrp-659">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-659-0" data-tab-group="tabgrp-659" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-659-1" data-tab-group="tabgrp-659">Objective-C</button></div>

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

```Swift
func snr_handledAction(deepLink: String, source: SyneriseSource) -> Void
```

</div>

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

```Objective-C
- (void)SNR_handledActionWithDeepLink:(NSString *)deepLink source:(SNRSyneriseSource)source
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **deeplink** | String | Deep link value from the action of the activity. |
| **source** | [SyneriseSource](/developers/mobile-sdk/class-reference/ios/campaigns#synerisesource) | Identifies Synerise campaign source ([SyneriseActivity](/developers/mobile-sdk/class-reference/ios/campaigns#synerisesource)). |


#### snr_handledAction(deepLink: String, activity: SyneriseActivity, completionHandler: SyneriseActivityCompletionHandler) {id=snr-handled-deeplink-action-advanced-with-parameters-deprecated}

This method is called when Synerise handles deeplink action from campaign activities.


<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 was deprecated in SDK version 5.0.0.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-660">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-660-0" data-tab-group="tabgrp-660" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-660-1" data-tab-group="tabgrp-660">Objective-C</button></div>

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

```Swift
func snr_handledAction(deepLink: String, activity: SyneriseActivity, completionHandler: SyneriseActivityCompletionHandler) -> Void
```

</div>

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

```Objective-C
- (void)SNR_handledActionWithDeepLink:(NSString *)deepLink activity:(SNRSyneriseActivity)activity completionHandler:(SNRSyneriseActivityCompletionHandler)completionHandler
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **deeplink** | String | Deep link value from the action of the activity. |
| **activity** | [SyneriseActivity](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivity) | Identifies Synerise campaign activity ([SyneriseActivity](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivity)). |
| **completionHandler** | [SyneriseActivityAction](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivityaction) | A block/closure that should be invoked with parameters: [SyneriseActivityAction](/developers/mobile-sdk/class-reference/ios/campaigns#syneriseactivityaction) and completion block to execute. |

---
---

## NotificationDelegate {id=notification-delegate}

A delegate to handle events from Synerise notifications.
  
See [Configuring push notifications](/developers/mobile-sdk/configuring-push-notifications/ios#delegate-methods) for more details.


<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">

**NotificationDelegate** is available from 4.10.0 SDK version. All methods are optional.

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


To set your object as delegate, you must use [this method](/developers/mobile-sdk/method-reference/ios/campaigns#set-notification-delegate).


<div class="content-tabs code-tabs" data-tab-group="tabgrp-661">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-661-0" data-tab-group="tabgrp-661" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-661-1" data-tab-group="tabgrp-661">Objective-C</button></div>

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

```Swift
Synerise.setNotificationDelegate(YOUR_OBJECT)
```

</div>

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

```Objective-C
[SNRSynerise setNotificationDelegate:YOUR_OBJECT];
```

</div>
</div>


#### snr_notificationDidReceive(notificationInfo: NotificationInfo) {id=notification-delegate-notification-did-receive}

This method is called when a Synerise notification is received.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-662">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-662-0" data-tab-group="tabgrp-662" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-662-1" data-tab-group="tabgrp-662">Objective-C</button></div>

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

```Swift
snr_notificationDidReceive(notificationInfo: NotificationInfo)
```

</div>

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

```Objective-C
- (void)SNR_notificationDidReceive:(SNRNotificationInfo *)notificationInfo
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **notificationInfo** | [NotificationInfo](/developers/mobile-sdk/class-reference/ios/campaigns#notificationinfo) | Object providing information about the notification. |

#### snr_notificationDidDismiss(notificationInfo: NotificationInfo) {id=notification-delegate-notification-did-dismiss}

This method is called when a Synerise notification is dismissed.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-663">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-663-0" data-tab-group="tabgrp-663" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-663-1" data-tab-group="tabgrp-663">Objective-C</button></div>

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

```Swift
func snr_notificationDidDissmis(notificationInfo: NotificationInfo)
```

</div>

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

```Objective-C
- (void)SNR_notificationDidDissmis:(SNRNotificationInfo *)notificationInfo
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **notificationInfo** | [NotificationInfo](/developers/mobile-sdk/class-reference/ios/campaigns#notificationinfo) | Object providing information about the notification. |

#### snr_notificationClicked(notificationInfo: NotificationInfo) {id=notification-delegate-notification-clicked}

This method is called when a Synerise notification is clicked.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-664">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-664-0" data-tab-group="tabgrp-664" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-664-1" data-tab-group="tabgrp-664">Objective-C</button></div>

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

```Swift
func snr_notificationClicked(notificationInfo: NotificationInfo)
```

</div>

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

```Objective-C
- (void)SNR_notificationClicked:(SNRNotificationInfo *)notificationInfo
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **notificationInfo** | [NotificationInfo](/developers/mobile-sdk/class-reference/ios/campaigns#notificationinfo) | Object providing information about the notification. |

#### snr_notificationClicked(notificationInfo: NotificationInfo, actionButton: String) {id=notification-delegate-notification-clicked-with-button}

This method is called when an action button is clicked in a Synerise notification.


<div class="content-tabs code-tabs" data-tab-group="tabgrp-665">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-665-0" data-tab-group="tabgrp-665" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-665-1" data-tab-group="tabgrp-665">Objective-C</button></div>

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

```Swift
func snr_notificationClicked(notificationInfo: NotificationInfo, actionButton: String)
```

</div>

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

```Objective-C
- (void)SNR_notificationActionButtonClicked:(SNRNotificationInfo *)notificationInfo actionButton:(NSString *)actionButton
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **notificationInfo** | [NotificationInfo](/developers/mobile-sdk/class-reference/ios/campaigns#notificationinfo) | Object providing information about the notification. |
| **actionButton** | String | Text on the clicked action button. |

---
---

## ClientStateDelegate {id=client-state-delegate}
A delegate to handle customer's sign-in state changes.
  
To set your object as delegate, you must use [this method](/developers/mobile-sdk/method-reference/ios/client-authentication#set-client-state-delegate).


<div class="content-tabs code-tabs" data-tab-group="tabgrp-666">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-666-0" data-tab-group="tabgrp-666" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-666-1" data-tab-group="tabgrp-666">Objective-C</button></div>

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

```Swift
Client.setClientStateDelegate(YOUR_OBJECT)
```

</div>

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

```Objective-C
[SNRClient setClientStateDelegate:YOUR_OBJECT];
```

</div>
</div>


#### snr_clientIsSignedIn() {id=client-state-delegate-client-is-signed-in}

This method is called when a customer signs in.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-667">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-667-0" data-tab-group="tabgrp-667" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-667-1" data-tab-group="tabgrp-667">Objective-C</button></div>

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

```Swift
func snr_clientIsSignedIn()
```

</div>

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

```Objective-C
- (void)SNR_clientIsSignedIn
```

</div>
</div>


#### snr_clientIsSignedOut(reason: ClientSessionEndReason) {id=client-state-delegate-client-is-signed-out}

This method is called when a customer signs out.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-668">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-668-0" data-tab-group="tabgrp-668" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-668-1" data-tab-group="tabgrp-668">Objective-C</button></div>

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

```Swift
func snr_clientIsSignedOut(reason: ClientSessionEndReason)
```

</div>

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

```Objective-C
- (void)SNR_clientIsSignedOutWithReason:(SNRClientSessionEndReason)reason
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **reason** | [ClientSessionEndReason](/developers/mobile-sdk/class-reference/ios/client#clientsessionendreason) | Specifies the reason for signing out. |

---
---

## InjectorInAppMessageDelegate {id=injector-in-app-message-delegate}
A delegate to handle the states of [in-app message](/developers/mobile-sdk/campaigns/in-app-message).


<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">

**InjectorInAppMessageDelegate** is available from 4.6.0 SDK version.

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

  
To set your object as delegate, you must use [this method](/developers/mobile-sdk/method-reference/ios/campaigns#set-in-app-message-delegate).


<div class="content-tabs code-tabs" data-tab-group="tabgrp-669">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-669-0" data-tab-group="tabgrp-669" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-669-1" data-tab-group="tabgrp-669">Objective-C</button></div>

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

```Swift
Injector.setInAppMessageDelegate(YOUR_OBJECT)
```

</div>

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

```Objective-C
[SNRInjector setInAppMessageDelegate:YOUR_OBJECT];
```

</div>
</div>


#### snr_shouldInAppMessageAppear(data: InAppMessageData) -> Bool {id=injector-in-app-message-delegate-should-in-app-message-appear}

This method is called after an in-app message is loaded and Synerise SDK asks for permission to show it.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-670">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-670-0" data-tab-group="tabgrp-670" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-670-1" data-tab-group="tabgrp-670">Objective-C</button></div>

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

```Swift
func snr_shouldInAppMessageAppear(data: InAppMessageData) -> Bool
```

</div>

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

```Objective-C
- (BOOL)SNR_shouldInAppMessageAppear:(SNRInAppMessageData *)data
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |

#### snr_inAppMessageDidAppear(data: InAppMessageData) {id=injector-in-app-message-delegate-in-app-message-did-appear}

This method is called after an in-app message appears.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-671">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-671-0" data-tab-group="tabgrp-671" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-671-1" data-tab-group="tabgrp-671">Objective-C</button></div>

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

```Swift
func snr_inAppMessageDidAppear(data: InAppMessageData)
```

</div>

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

```Objective-C
- (void)SNR_inAppMessageDidAppear:(SNRInAppMessageData *)data
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |

#### snr_inAppMessageDidDisappear(data: InAppMessageData) {id=injector-in-app-message-delegate-in-app-message-did-disappear}

This method is called after an in-app message disappears.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-672">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-672-0" data-tab-group="tabgrp-672" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-672-1" data-tab-group="tabgrp-672">Objective-C</button></div>

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

```Swift
func snr_inAppMessageDidDisappear(data: InAppMessageData)
```

</div>

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

```Objective-C
- (void)SNR_inAppMessageDidDisappear:(SNRInAppMessageData *)data
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |

#### snr_inAppMessageDidChangeSize(rect: CGRect) {id=injector-in-app-message-delegate-in-app-message-did-change-size}

This method is called when an in-app message changes its size.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-673">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-673-0" data-tab-group="tabgrp-673" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-673-1" data-tab-group="tabgrp-673">Objective-C</button></div>

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

```Swift
func snr_inAppMessageDidChangeSize(rect: CGRect)
```

</div>

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

```Objective-C
- (void)SNR_inAppMessageDidChangeSize:(CGRect)rect
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |

#### snr_inAppMessageContextIsNeeded(data: InAppMessageData) -> [AnyHashable: Any]? {id=injector-in-app-message-delegate-in-app-message-context-is-needed}

This method is called when an individual context (for example a profile ID, an item SKU) for an in-app message is needed.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-674">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-674-0" data-tab-group="tabgrp-674" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-674-1" data-tab-group="tabgrp-674">Objective-C</button></div>

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

```Swift
func snr_inAppMessageContextIsNeeded(data: InAppMessageData) -> [AnyHashable: Any]?
```

</div>

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

```Objective-C
- (nullable NSDictionary *)SNR_inAppMessageContextIsNeeded:(SNRInAppMessageData *)data
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |

#### snr_inAppMessageHandledAction(data: InAppMessageData, deepLink: String) {id=injector-in-app-message-delegate-in-app-message-handled-deeplink-action}

This method is called when the [`SRInApp.openDeeplink(url)` method](/docs/campaign/in-app-messages/creating-inapp-templates/creating-inapp-template#open-deeplink) is used in an in-app message.


<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 was renamed in 5.0.0 SDK version from `snr_inAppMessageHandledAction(data:deeplink:)`.

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



<div class="content-tabs code-tabs" data-tab-group="tabgrp-675">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-675-0" data-tab-group="tabgrp-675" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-675-1" data-tab-group="tabgrp-675">Objective-C</button></div>

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

```Swift
func snr_inAppMessageHandledAction(data: InAppMessageData, deepLink: String)
```

</div>

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

```Objective-C
- (void)SNR_inAppMessageHandledDeeplinkAction:(SNRInAppMessageData *)data deepLink:(NSString *)deepLink
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |
| **deepLink** | String | Deep link value from the action of the activity. |

#### snr_inAppMessageHandledAction(data: InAppMessageData, url: URL) {id=injector-in-app-message-delegate-in-app-message-handled-url-action}

This method is called when the [`SRInApp.openUrl(url)` method](/docs/campaign/in-app-messages/creating-inapp-templates/creating-inapp-template#open-url) is used in an in-app message.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-676">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-676-0" data-tab-group="tabgrp-676" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-676-1" data-tab-group="tabgrp-676">Objective-C</button></div>

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

```Swift
func snr_inAppMessageHandledAction(data: InAppMessageData, url: URL)
```

</div>

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

```Objective-C
- (void)SNR_inAppMessageHandledURLAction:(SNRInAppMessageData *)data url:(NSURL *)url
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |
| **url** | URL | URL value from the action of the activity. |

#### snr_inAppMessageHandledCustomAction(data: InAppMessageData, name: String, parameters: [AnyHashable: Any]) {id=injector-in-app-message-delegate-in-app-message-handled-custom-action}

This method is called when the [`SRInApp.handleCustomAction(name, params)` method](/docs/campaign/in-app-messages/creating-inapp-templates/creating-inapp-template#trigger-a-custom-action) is used in an in-app message.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-677">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-677-0" data-tab-group="tabgrp-677" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-677-1" data-tab-group="tabgrp-677">Objective-C</button></div>

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

```Swift
func snr_inAppMessageHandledCustomAction(data: InAppMessageData, name: String, parameters: [AnyHashable: Any])
```

</div>

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

```Objective-C
- (void)SNR_inAppMessageHandledCustomAction:(SNRInAppMessageData *)data name:(NSString *)name parameters:(NSDictionary *)parameters
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **data** | [InAppMessageData](/developers/mobile-sdk/class-reference/ios/campaigns#inappmessagedata) | Model representation of the in-app message. |
| **name** | String | Custom action name for identification. |
| **parameters** | [AnyHashable: Any] | Custom action parameters. |

---
---

## TrackerDelegate {id=tracker-delegate}
A delegate to handle events from the Tracker.

To set your object as delegate, you must use [this method](/developers/mobile-sdk/method-reference/ios/tracking#set-tracker-delegate).


<div class="content-tabs code-tabs" data-tab-group="tabgrp-678">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-678-0" data-tab-group="tabgrp-678" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-678-1" data-tab-group="tabgrp-678">Objective-C</button></div>

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

```Swift
Tracker.setDelegate(YOUR_OBJECT)
```

</div>

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

```Objective-C
[SNRTracker setDelegate:YOUR_OBJECT];
```

</div>
</div>


#### snr_locationUpdateRequired() {id=tracker-delegate-location-update-required}

This method is called when the Tracker module requests a location update.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-679">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-679-0" data-tab-group="tabgrp-679" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-679-1" data-tab-group="tabgrp-679">Objective-C</button></div>

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

```Swift
func snr_locationUpdateRequired()
```

</div>

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

```Objective-C
- (void)SNR_locationUpdateRequired
```

</div>
</div>


---
---

## NotificationServiceExtensionDelegate {id=notification-service-extension-delegate}
A delegate to handle events from Notification Extension Service.


<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">

**NotificationServiceExtensionDelegate** is available from 4.0.0 SDK version.

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


To set your object as delegate, you must use this code in your Notification Service Extension.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-680">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-680-0" data-tab-group="tabgrp-680" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-680-1" data-tab-group="tabgrp-680">Objective-C</button></div>

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

```Swift
NotificationServiceExtension.setDelegate(YOUR_OBJECT)
```

</div>

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

```Objective-C
[SNRNotificationServiceExtension setDelegate:YOUR_OBJECT];
```

</div>
</div>


#### notificationServiceExtensionDidFailDecryptionWithError(_: Error) {id=notification-service-extension-delegate-notification-service-extension-did-fail-decryption}

This method is called when the decryption process fails.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-681">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-681-0" data-tab-group="tabgrp-681" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-681-1" data-tab-group="tabgrp-681">Objective-C</button></div>

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

```Swift
func notificationServiceExtensionDidFailDecryptionWithError(_: Error)
```

</div>

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

```Objective-C
- (void)notificationServiceExtensionDidFailDecryptionWithError:(NSError *)error
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **error** | NSError | The error that occurred |

#### notificationServiceExtensionDidFailProcessingWithError(_: Error) {id=notification-service-extension-delegate-notification-service-extension-did-fail-processing}

This method is called when the processing notification operation fails.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-682">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-682-0" data-tab-group="tabgrp-682" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-682-1" data-tab-group="tabgrp-682">Objective-C</button></div>

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

```Swift
func notificationServiceExtensionDidFailProcessingWithError(_: Error)
```

</div>

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

```Objective-C
- (void)notificationServiceExtensionDidFailProcessingWithError:(NSError *)error
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **error** | NSError | The error that occurred |

---
---

## ContentWidgetDelegate {id=content-widget-delegate}
A delegate to handle [Content Widget](/developers/mobile-sdk/displaying-recommendations/content-widget) actions.
  
To set your object as delegate, you must use this code below.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-683">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-683-0" data-tab-group="tabgrp-683" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-683-1" data-tab-group="tabgrp-683">Objective-C</button></div>

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

```Swift
let widget = ContentWidget(options: widgetOptions, appearance: widgetAppearance)
widget.delegate = YOUR_OBJECT
```

</div>

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

```Objective-C
SNRContentWidget *widget = [SNRContentWidget initWithOptions:options andAppearance:appearance];
widget.delegate = YOUR_OBJECT;
```

</div>
</div>


#### snr_widgetDidLoad(widget: ContentWidget) {id=content-widget-delegate-widget-did-load}

This method is called after a widget is loaded.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-684">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-684-0" data-tab-group="tabgrp-684" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-684-1" data-tab-group="tabgrp-684">Objective-C</button></div>

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

```Swift
func snr_widgetDidLoad(widget: ContentWidget)
```

</div>

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

```Objective-C
- (void)SNR_widgetDidLoad:(SNRContentWidget *)widget
```

</div>
</div>



| Parameter | Type | Description |
| --- | --- | --- |
| **widget** | [ContentWidget](/developers/mobile-sdk/class-reference/ios/content-widget#contentwidget) | The widget instance that called the delegate method. |

#### snr_widgetDidNotLoad(widget:ContentWidget error: Error) {id=content-widget-delegate-widget-did-not-load}

This method is called when an error occurs while loading a widget.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-685">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-685-0" data-tab-group="tabgrp-685" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-685-1" data-tab-group="tabgrp-685">Objective-C</button></div>

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

```Swift
func snr_widgetDidNotLoad(widget:ContentWidget error: Error)
```

</div>

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

```Objective-C
- (void)SNR_widget:(SNRContentWidget *)widget didNotLoadWithError:(NSError *)error
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **widget** | [ContentWidget](/developers/mobile-sdk/class-reference/ios/content-widget) | The widget instance that called the delegate method. |
| **error** | NSError | The error that occurred. |

#### snr_widgetDidReceiveClickAction(widget:ContentWidget model: BaseModel) {id=content-widget-delegate-widget-did-receive-click-action}

This method is called when the customer clicks a widget’s item.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-686">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-686-0" data-tab-group="tabgrp-686" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-686-1" data-tab-group="tabgrp-686">Objective-C</button></div>

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

```Swift
func snr_widgetDidReceiveClickAction(widget:ContentWidget model: BaseModel)
```

</div>

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

```Objective-C
- (void)SNR_widget:(SNRContentWidget *)widget didReceiveClickActionForModel:(SNRBaseModel *)model
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **widget** | [ContentWidget](/developers/mobile-sdk/class-reference/ios/content-widget) | The widget instance that called the delegate method. |
| **model** | BaseModel | The model's object that was clicked. |

#### snr_widgetIsLoading(widget: ContentWidget isLoading: Bool) {id=content-widget-delegate-widget-is-loading}

This method is called when the widget’s loading state changes.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-687">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-687-0" data-tab-group="tabgrp-687" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-687-1" data-tab-group="tabgrp-687">Objective-C</button></div>

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

```Swift
func snr_widgetIsLoading(widget: ContentWidget isLoading: Bool)
```

</div>

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

```Objective-C
- (void)SNR_widget:(SNRContentWidget *)widget isLoading:(BOOL)isLoading
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **widget** | [ContentWidget](/developers/mobile-sdk/class-reference/ios/content-widget) | The widget instance that called the delegate method. |
| **isLoading** | Bool | Widget's loading state. |

#### snr_widgetDidChangeSize(widget: ContentWidget size: CGSize) {id=content-widget-delegate-widget-did-change-size}

This method is called when the widget’s size changes.

<div class="content-tabs code-tabs" data-tab-group="tabgrp-688">
<div class="tab-buttons"><button class="tab-button" data-tab-id="tabgrp-688-0" data-tab-group="tabgrp-688" data-tab-active="true">Swift</button><button class="tab-button" data-tab-id="tabgrp-688-1" data-tab-group="tabgrp-688">Objective-C</button></div>

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

```Swift
func snr_widgetDidChangeSize(widget: ContentWidget size: CGSize)
```

</div>

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

```Objective-C
- (void)SNR_widget:(SNRContentWidget *)widget didChangeToSize:(CGSize)size
```

</div>
</div>


| Parameter | Type | Description |
| --- | --- | --- |
| **widget** | [ContentWidget](/developers/mobile-sdk/class-reference/ios/content-widget) | The widget instance that called the delegate method. |
| **size** | CGSize | Widget's new size. |

---
---

## InjectorWalkthroughDelegate {id=injector-walkthrough-delegate}


<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">

**InjectorWalkthroughDelegate** was removed in 5.0.0 SDK version.

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


---
---

## InjectorBannerDelegate {id=injector-banner-delegate}


<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">

**InjectorBannerDelegate** was removed in 5.0.0 SDK version.

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

