
## Refresh customer token
---
This method refreshes the customer’s current token.
  

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

Returns an error if the token has expired and cannot be refreshed.

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

**Declared In:**  
Headers/SNRClient.h
  
**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)
  
**Declaration:**  

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

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

```Swift
static func refreshToken(success: (() -> Void), failure: ((ApiError) -> Void)) -> Void
```

</div>

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

```Objective-C
+ (void)refreshTokenWithSuccess:(nonnull void (^)(void))success failure:(nonnull void (^)(NSError *error))failure
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **success** | (() -> Void) | yes | - | Closure/Block to be executed when the operation is completed successfully |
| **failure** | (([ApiError](/developers/mobile-sdk/class-reference/ios/miscellaneous#snrapierror)) -> Void) | yes | - | Closure/Block to be executed when the operation is completed with an error |
  
**Return Value:**  
No value is returned.
  
**Example:**

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

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

```Swift
Client.refreshToken(success: { _ in
    Client.retrieveToken(success: { (token) in
      // success
        let tokenString: String = token.tokenString
        let tokenOrigin: TokenOrigin = token.tokenOrigin
    }, failure: { (error) in
      // failure
    })
}, failure: { (error) in
  // failure
})
```

</div>

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

```Objective-C
[SNRClient refreshTokenWithSuccess:^() {
    [SNRClient retrieveTokenWithSuccess:^(SNRToken *token) {
      // success

        NSString *tokenString = token.tokenString;
        SNRTokenOrigin tokenOrigin = token.tokenOrigin;
    } failure:^(SNRApiError *error) {
      // failure
    }];
} failure:^(SNRApiError *error) {
  // failure
}];
```

</div>
</div>


## Retrieve customer token
---
This method retrieves the customer’s current, active token.
  

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

Returns an error if the token has expired and cannot be retrieved.

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

**Declared In:**  
Headers/SNRClient.h
  
**Related To:**  
[Token](/developers/mobile-sdk/class-reference/ios/client#token)
  
**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)

**Declaration:**  

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

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

```Swift
static func retrieveToken(success: ((Token) -> Void), failure: ((ApiError) -> Void)) -> Void
```

</div>

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

```Objective-C
+ (void)retrieveTokenWithSuccess:(nonnull void (^)(SNRToken *token))success failure:(nonnull void (^)(NSError *error))failure
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| **success** | ((Token) -> Void) | yes | - | Closure/Block to be executed when the operation is completed successfully |
| **failure** | (([ApiError](/developers/mobile-sdk/class-reference/ios/miscellaneous#snrapierror)) -> Void) | yes | - | Closure/Block to be executed when the operation is completed with an error |
  
**Return Value:**  
No value is returned.
  
**Example:**

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

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

```Swift
Client.retrieveToken(success: { (token) in
  // success
    let tokenString: String = token.tokenString
    let tokenOrigin: TokenOrigin = token.tokenOrigin
}, failure: { (error) in
  // failure
})
```

</div>

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

```Objective-C
[SNRClient retrieveTokenWithSuccess:^(SNRToken *token) {
  // success

    NSString *tokenString = token.tokenString;
    SNRTokenOrigin tokenOrigin = token.tokenOrigin;
} failure:^(SNRApiError *error) {
  // failure
}];
```

</div>
</div>


## Get current customer UUID
---
This method retrieves the customer’s current UUID.
**Declared In:**  
Headers/SNRClient.h
  
**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)
  
**Declaration:**  

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

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

```Swift
static func getUUID() -> String
```

</div>

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

```Objective-C
+ (NSString *)getUUID;
```

</div>
</div>

    
**Return Value:**  
The method returns the customer's UUID as string.
  
**Example:**

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

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

```Swift
let clientUUID: String = Client.getUUID()
```

</div>

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

```Objective-C
NSString *clientUUID = [SNRClient getUUID];
```

</div>
</div>


## Get customer UUID for use in authentication
---
This method retrieves the current UUID or generates a new one from a seed.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:green">Introduced in:</span> | 4.15.0 | 5.15.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">

This operation doesn't affect the customer session in the SDK.

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

**Declared In:**  
Headers/SNRClient.h
  
**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)
  
**Declaration:**  

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

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

```Swift
static func getUUIDForAuthentication(authID: String) -> String
```

</div>

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

```Objective-C
+ (NSString *)getUUIDForAuthenticationWithAuthID:(NSString *)authID
```

</div>
</div>

  
**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **authID** | String | yes | - | Seed for UUID generation |

**Return Value:**  
The method returns the UUID for use in authentication as a string.
  
**Example:**

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

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

```Swift
let clientUUID: String = Client.getUUIDForAuthentication(authID: "AUTH_ID")
```

</div>

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

```Objective-C
NSString *clientUUID = [SNRClient getUUIDForAuthenticationWithAuthID:@"AUTH_ID"];
```

</div>
</div>


## Regenerate customer
---
This method regenerates the UUID and clears the authentication token, login session, custom email, and custom identifier.
  
This operation works only if the customer is anonymous.

This operation clears the authentication token, login (if applicable), custom email, and custom identifier.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:green">Introduced in:</span> | 3.3.10 | 3.3.5 | 0.9.0 | 0.7.0 |
**Declared In:**  
Headers/SNRClient.h

**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)
  
**Declaration:**  

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

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

```Swift
static func regenerateUUID() -> Void
```

</div>

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

```Objective-C
+ (void)regenerateUUID;
```

</div>
</div>

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

## Regenerate customer with identifier
---
This method regenerates the UUID and clears the authentication token, login session, custom email, and custom identifier.
  
This operation works only if the customer is anonymous.
  
This operation clears the authentication token, login (if applicable), custom email, and custom identifier
  
The optional `clientIdentifier` parameter is a seed for UUID generation.
  
| | **iOS SDK** | **Android SDK** | **React Native SDK** | **Flutter SDK** |
| --- | --- | --- | --- | --- |
| <span style="color:green">Introduced in:</span> | 3.6.5 | 3.6.4 | 0.9.10 | 0.7.2 |
**Declared In:**  
Headers/SNRClient.h
  
**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)
  
**Declaration:**  

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

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

```Swift
static func regenerateUUID(clientIdentifier: String?) -> Void
```

</div>

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

```Objective-C
+ (void)regenerateUUIDWithClientIdentifier:(NSString *)clientIdentifier;
```

</div>
</div>


**Parameters:**  
| Parameter | Type | Mandatory | Default | Description |
| --- | --- | --- | --- | --- |
| **clientIdentifier** | String | no | - | Seed for UUID generation |
  

<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 **clientIdentifier** parameter is used for decreasing the number of UUID refreshes, so it must be unique for every customer.

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

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

## Destroy current session
---
This method destroys the session completely.

This method clears all session data (both client and anonymous) and removes cached data. Then, it regenerates the UUID and creates the new anonymous session.
**Declared In:**  
Headers/SNRClient.h

**Class:**  
[Client](/developers/mobile-sdk/class-reference/ios/modules#client)
  
**Declaration:**  

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

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

```Swift
static func destroySession()
```

</div>

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

```Objective-C
+ (void)destroySession
```

</div>
</div>

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

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

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

```Swift
Client.destroySession()
```

</div>

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

```Objective-C
[SNRClient destroySession];
```

</div>
</div>
