# Introduction

The [NextBillion.ai](http://NextBillion.ai)’s iOS Navigation SDK allows users to to prepare routing data and map tiles for regions that need offline route calculation, map matching, navigation, and map rendering. This guide explains how to integrate offline routing data, map tiles, region downloads, and hybrid route requests for building comprehensive offline-navigation capabilities using NextBillion.ai Navigation SDK for iOS 4.1.4 and public `NBNavigation` APIs.

We start with reviewing the SDK requirements and different components involved for building an iOS app for offline navigation.

## Requirements, Prerequisites, and Runtime Configuration

Before we proceed, make sure that you have:

-   NextBillion.ai Navigation SDK for iOS **4.1.4 or later**.
    
-   NextBillion.ai [Nbmaps SDK for iOS](https://docs.nextbillion.ai/maps/ios-offline-maps/introduction) **2.2.0**. If the app uses Carthage, upgrade the Maps SDK together with Navigation SDK 4.1.4.
    
-   iOS **13.0** or later.
    
-   **Programming Language:** Swift 5
    
-   A valid NextBillion.ai API key.
    

## Integration Components

Offline Navigation functionality consists of routing data and map tiles. Routing data supports offline route calculation, map matching, and navigation, while map tiles support map rendering.

| Data type | Purpose | Primary API | Can fail independently |
| --- | --- | --- | --- |
| Routing data | Route calculation and navigation | _NBNavigation_ routing-region APIs | Yes |
| Map tiles | Offline map display and preview | _NBNavigation_ map-region APIs | Yes |
| Region catalog | Discover `regionId` values and display hierarchy | Sync and list, or _fetchRegionLists_ | Routing and map catalogs can fail independently |

Routing data and map tiles are downloaded, stored, and reported separately, but they use the same `regionId` to identify a region.

## Before You Start

-   Add the required Navigation SDK and Maps SDK packages.
    
-   Set _NGLAccountManager.accessToken = "YOUR_ACCESS_KEY"_ before SDK usage.
    
-   Decide the initial route mode and offline download network policy.
    
-   Configure `NBNavigation.NavigationRuntimeConfig` before the first _initializeOffline_ call.
    
-   Use public `NBNavigation` APIs only. Do not create _OfflineNavigationEngine_ directly or call _NGLRegionalOffline.configure_.
    

> _Check out the repo_ [Nextbillion.ai Offline Navigation iOS Demo](https://github.com/nextbillion-ai/offline-navigation-ios-demo) _for integrating the Offline Navigation SDK into a reference application._
