# TomTomSDKOfflineFrameworks

The TomTomSDKOfflineFrameworks package provides iOS modules to build "offline" navigation applications requiring no internet connectivity.

> Offline functionality for Maps SDK and Navigation SDK for iOS is only available upon request.[Contact us](https://developer.tomtom.com/tomtom-sdk-for-ios/request-access) to get started.

## Requirements

1. Xcode 14.2+
1. Swift 5.7+
1. Deployment target: iOS 13+

## Installation
### Getting access
1. Because the artifacts for Offline SDK are private, you will need to [Contact us](https://developer.tomtom.com/tomtom-sdk-for-ios/request-access) to get access.
2. Once you have obtained access, go to [repositories.tomtom.com](https://repositories.tomtom.com) and log in with your account. Expand the user menu in the top-right corner, and select `Edit profile` → `Generate an Identity Token`. Copy the generated token and use it to specify your credentials in the `~/.netrc` file. If the `~/.netrc` file doesn’t exist, create one and add the following entries:
    * Replace the `USERNAME_PLACEHOLDER` with the login username or email you use for [repositories.tomtom.com](https://repositories.tomtom.com).
    * Replace the `IDENTITY_TOKEN_PLACEHOLDER` with the generated identity token.
    * Add a new line to the end of the `~/.netrc` file to avoid parsing errors.
    ```
    machine repositories.tomtom.com
    login <USERNAME_PLACEHOLDER>
    password <IDENTITY_TOKEN_PLACEHOLDER>
    ```
### Adding the TomTomSDKOfflineFrameworks package to your Xcode project
1. Add a package dependency to your Xcode project:
    1. Ensure you finished the [Getting access](#getting-access) steps.
    2. Select `File` → `Add Package Dependencies...` (or `File` → `Add Packages...` in Xcode 14).
    3. Enter the next URL in a search field: https://github.com/tomtom-international/tomtom-sdk-spm-offline
    4. Set `Dependency Rule` to `Exact Version`.
        > We recommend using the `Exact Version` to have a consistent resolution.
    5. Ensure the `Add to Project` field contains your project.
    6. Click `Add Package` and wait for the Xcode to resolve the package.
    7. You should see the list of `Package Products`.
    8. Select a product you want to add to your project.
    9. And click `Add Package`.
2. Add more products to your target:
    1. Select your project in the Xcode Project Navigator.
    2. Select the target to which you want to add dependencies.
    3. Select the `General` section and scroll down to the `Frameworks, Libraries, and Embedded Content` list.
    4. Click `+` button.
    5. Select the products you want to add and click the `Add` button.
### Adding the TomTomSDKOfflineFrameworks package to your SPM package
1. Ensure you finished the [Getting access](#getting-access) steps.
2. Add next line to your package dependencies in the `Package.swift` file:
    ```swift
    .package(url: "https://github.com/tomtom-international/tomtom-sdk-spm-offline", exact: "0.66.1")
    ```
    > We recommend using the `exact` version to have a consistent resolution.
3. Add next required module to your target dependencies in the `Package.swift` file, e.g.:
    ```swift
    .product(name: "TomTomSDKSearchOffline", package: "tomtom-sdk-spm-offline")
    ```
4. The resulting package might look like this:
    ```swift
    let package = Package(
        name: "MyLibrary",
        platforms: [.iOS(.v14)],
        products: [
            .library(name: "MyLibrary", targets: ["MyLibrary"]),
        ],
        dependencies: [
            .package(url: "https://github.com/tomtom-international/tomtom-sdk-spm-offline", exact: "0.66.1")
        ],
        targets: [
           .target(name: "MyLibrary", dependencies: [
                .product(name: "TomTomSDKSearchOffline", package: "tomtom-sdk-spm-offline")
                /* add more products here */
           ]),
        ]
    )
    ```