# MoveConfig

The MOVE SDK offers to detect different modes of transport and driving services. The host app can configure which driving services to activate and modes of transport to detect by setting the [MoveConfig](https://docs.movesdk.com/move-platform/sdk/models/moveconfig) object when initializing the MOVE SDK.

{% hint style="warning" %}
**The host app can only configure its MOVE SDK services to the set or subset of services subscribed** by the MOVE project ID in the [MOVE dashboard](https://docs.movesdk.com/move-platform/sdk/getting-started/move-dashboard). You will get a failure list with [MoveError.Unauthorized](https://docs.movesdk.com/move-platform/sdk/models/moveservicefailure) error if services are not configured.
{% endhint %}

{% tabs %}
{% tab title="Android" %}

```kotlin
data class MoveConfig(
    var moveDetectionServices: List<MoveDetectionService> = emptyList(),
)

...

sealed class MoveDetectionService {

    class Driving(val drivingServices: List<DrivingService>? = null) : MoveDetectionService()
    object Cycling : MoveDetectionService()
    class Walking(val walkingServices: List<WalkingService>? = null) : MoveDetectionService()
    object Places : MoveDetectionService()
    object PublicTransport : MoveDetectionService()
    object PointsOfInterest : MoveDetectionService()
    object AutomaticImpactDetection : MoveDetectionService()
    object AssistanceCall : MoveDetectionService()
    object Health : MoveDetectionService()

}
    
```

{% endtab %}

{% tab title="iOS" %}

```swift
struct MoveConfig {
    enum DetectionService {
        case driving([DrivingService])
        case cycling
        case walking([WalkingService])
        case places
        case publicTransport
        case pointsOfInterest
        case automaticImpactDetection
        case assistanceCall
        case health
    }

    enum DrivingService {
        case drivingBehavior
        case distractionFreeDriving
        case deviceDiscovery
    }
    
    enum WalkingService {
        case location
    }
 
    var detectionServices: [TimelineDetectionService]
}
```

{% endtab %}

{% tab title="React Native" %}

```javascript
export type MoveSdkConfig = {
  timelineDetectionServices: TimelineDetectionService[];
  drivingServices: DrivingService[];
  walkingServices: WalkingService[];
};
export type DrivingService = 'DISTRACTION_FREE_DRIVING' | 'DRIVING_BEHAVIOUR' | 'DEVICE_DISCOVERY';
export type WalkingService = 'LOCATION';
export type TimelineDetectionService =
  | 'DRIVING'
  | 'CYCLING'
  | 'WALKING'
  | 'PUBLIC_TRANSPORT'
  | 'AUTOMATIC_IMPACT_DETECTION'
  | 'ASSISTANCE_CALL'
  | 'POINTS_OF_INTEREST'
  | 'HEALTH';
```

{% endtab %}

{% tab title="Flutter" %}

```dart
import 'package:movesdk/io/dolphin/move/move_detection_service.dart';
```

```dart
enum MoveDetectionService {
  assistanceCall,
  automaticImpactDetection,
  cycling,
  driving,
  distractionFreeDriving,
  drivingBehaviour,
  deviceDiscovery,
  health,
  places,
  pointsOfInterest,
  publicTransport,
  walking,
  walkingLocation,
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Please check also the platform specific configuration pages ([Android](https://docs.movesdk.com/move-platform/sdk/api-interface/android/initialization) / [iOS](https://docs.movesdk.com/move-platform/sdk/api-interface/ios/intialization)).
{% endhint %}

<table data-header-hidden><thead><tr><th width="209.33333333333331">MoveConfig</th><th width="246"></th><th></th></tr></thead><tbody><tr><td><strong>MoveConfig</strong></td><td></td><td></td></tr><tr><td><strong>DetectionServices</strong></td><td></td><td>List of required modes of transportation to be detected.</td></tr><tr><td></td><td>driving</td><td>Detect the driving activity.</td></tr><tr><td></td><td>cycling</td><td>Detect the cycling activity.</td></tr><tr><td></td><td>walking</td><td>Detect the walking activity.</td></tr><tr><td></td><td>places</td><td>Detect places where user spent time.</td></tr><tr><td></td><td>publicTransport</td><td>Detect public transport trips</td></tr><tr><td></td><td>pointsOfInterest</td><td>Monitor and track points of interest </td></tr><tr><td></td><td>automaticImpactDetection</td><td>Detect impacts while driving or as stand alone service.</td></tr><tr><td></td><td>assistanceCall</td><td>Enable assistance call.</td></tr><tr><td><strong>DrivingServices</strong></td><td></td><td>List of required driving services to be detected.</td></tr><tr><td></td><td>distractionFreeDriving</td><td>Detect the user's distraction-free driving duration during a trip.</td></tr><tr><td></td><td>drivingBehavior</td><td>Detect the user's driving behavior during a trip.</td></tr><tr><td></td><td>deviceDiscovery</td><td>Scanning for registered devices during a trip. (since MOVE SDK v2.4)</td></tr><tr><td><strong>WalkingServices</strong></td><td></td><td></td></tr><tr><td></td><td>location</td><td>Detects locations in background while walking.</td></tr></tbody></table>

{% hint style="info" %}
Each [MoveConfig](https://docs.movesdk.com/move-platform/sdk/models/moveconfig) requires one or more permissions (see for [Android](https://docs.movesdk.com/move-platform/sdk/appendix/android/permission-handling) and [iOS](https://docs.movesdk.com/move-platform/sdk/appendix/ios/permission-handling)). **Individual MOVE SDK services will not function without the required permissions.** Check [MoveSDKState](https://docs.movesdk.com/move-platform/sdk/models/movestate) for more details.
{% endhint %}

| **MoveConfig related** |                                                             |
| ---------------------- | ----------------------------------------------------------- |
| `setup(...)`           | Setup the MOVE SDK with passing `MoveAuth` and `MoveConfig` |


---

# 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://docs.movesdk.com/move-platform/sdk/models/moveconfig.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.
