# Installing an App

Use the DTIS SDK to request an app installation from Ignite. When requesting an app installation via the DTIS SDK, the SDK confirms that you are authorized to install the app. Additionally, when requesting an app by its URI, the SDK verifies the file integrity before proceeding with installation.

The following diagram shows the sequence of calls to make using the DTIS SDK:

{% @mermaid/diagram content="sequenceDiagram
autonumber
participant Host as Host App
participant SDK as Ignite

```
Host->>SDK: Initialize and Authenticate
Host->>SDK: install()

opt callback and/or broadcast
    SDK-->>Host: onScheduled(taskID)
end

alt Install request by package name
    SDK->>SDK: Check for authorization
    SDK->>SDK: Download file
else Install request by URI
    SDK->>SDK: Download & validate file
end

SDK->>SDK: Install app on device

opt callback and/or broadcast
    SDK-->>Host: onStart()
    SDK-->>Host: onProgress()
    SDK-->>Host: onSuccess()
    SDK-->>Host: onError()
end

opt metadata=attribution bundle
    SDK->>SDK: Send attribution to MMP
end" %}
```

| SEQUENCE ITEM | DESCRIPTION                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1             | <p><strong>Initialization and Authentication</strong><br>The Host App initializes the DTIS SDK and connects to Ignite. This action establishes a secure connection between the two components and authenticates the Host App with Ignite. For more information, see <a href="../sdk-reference/connect-to-ignite">Connect to Ignite</a>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 2-3           | <p><strong>Installation Request</strong><br>The Host App calls the <a href="../sdk-reference/install-app"><code>install()</code> method</a> to request apps for installation. The call contains the app you want to install as well as the following options:</p><ul><li><strong>Installation Status Notifications</strong><br>Specify whether you want to receive callbacks, broadcasts, or both. For more information, see <a href="../sdk-reference/receive-installation-notifications">Receive Installation Notifications.</a></li><li><strong>Attribution</strong><br>Specify the attribution data to send to attribution partners. For more information, see <a href="../sdk-reference/send-mmp-attribution">Send Attribution Data</a>.</li><li><strong>Retry Policy</strong><br>Specify retry policy settings to override the default retry policy. For more information, see <a href="../sdk-reference/set-retry-policy">Set Retry Policy</a>.</li></ul> |
| 4-6           | <p><strong>Validation</strong><br>Based on whether you request an app by package name or URI, Ignite performs the following validations:</p><ul><li>If you requested an app by package name, Ignite checks whether you are authorized to request the app. Upon passing this check, Ignite begins downloading the app to the device.</li><li>If you request an app by URI, Ignite copies the file directly from the specified URI and then checks the file integrity before downloading the file to the device.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 7-11          | <p><strong>Installation and Progress Notifications</strong><br>Ignite starts the actual installation of the application. If you requested to receive notifications, Ignite sends notifications to the requested callback and broadcasts. For more information about receiving notifications, see <a href="../sdk-reference/receive-installation-notifications">Receive Installation Notifications</a>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 12            | <p><strong>Post-Installation Actions</strong><br>If you specified attribution data in the installation request, Ignite gathers the data to send to the respective mobile management partners (MMPs). For more information, see <a href="../sdk-reference/send-mmp-attribution">Send Attribution Data</a>.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
