# 1.23.0 -> 1.24.0

## Breaking changes

### New ConfigRegion Parameter

A new `ConfigRegion` parameter is now required during SDK initialization. This addition is essential for proper configuration. ConfigRegion contains three regions: `.US`, `.CAN`, and `.EU`

### Configuring Identity

From SDK 1.24, it is now essential to set the Identity as part of SDK initialization.

**Important:** The Identity set in this step will be utilized in all Portal APIs, so it is crucial to configure it before making any Portal API calls.

**Example:**

```swift
class InitializeSDK {
    init(completion: @escaping () -> ()) {
        try! initialize(
            Directories(root: sdkRootDirectory),
            configRegion: .EU,
            logLevel: .debug,
            tokenSignerFactory: { self.appTokenSigner }
        )
        
        // New Implementation
        let identity = Identity(apiKey: apiKey, externalReferenceID: uid)
        identity.setIdentity {
            // Proceed to the next step
            completion()
        }
    }
}
```

### Removal of Identity Parameter

The Identity parameter has been removed from the TripDetectionManager class.

**Example:**

#### TripDetectionManager

```swift
// New Implementation
let tripDetectionManager = TripDetectionManager(
    uploadRoute: UploadRoute.anyNetwork,
    telemetryEvents: telemetryEvents,
    externalRecordProviders: [externalRecordProvider],
    features: features
)
```

#### Portal Services

The Identity parameter has been removed from all Portal APIs because it is expected to be set during SDK initialization. For more information on all Portal APIs, check [here](/drivesync-portal.md).

```swift
// Updated initialization of ActivationService for example
let activationService = ActivationService()
```

### Update on AppMisuseManager

AppMisuseManager no longer requires identity and server type. It will now be retrieved from the backend.

```swift
let appMisuseService = AppMisuseManager(permissionManageable: permissionManager)
```

### Removing tdwpServerEnv from BluetoothDeviceProvider

The `tdwpEnvUrl` will now be retrieved from the backend. Therefore, it no longer needs to be included it in the BluetoothDeviceProvider.<br>

```swift
// New Implementation
let bluetoothProvider = BluetoothDeviceProvider(
    wedgeRegex: try NSRegularExpression(pattern: pattern, options: [])
)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sdk.ims.tech/migration-notes/ios/older-releases/1.23.0-greater-than-1.24.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
