# Introduction This set of guides outlines the steps necessary to integrate our Link SDKs into iOS and Android apps. ## Introduction If you are providing an iOS or Android app, whether fully native or written via frameworks such as React Native or Flutter, our recommended integration method is our mobile SDKs. Integrating with our mobile SDKs is the only way to support [Bluetooth verification](https://developers.enode.com/docs/link-ui/introduction#step-5-2-bluetooth-verification) on iOS and Android devices. While laptop and desktop computers with Chromium based web browsers (such as Google Chrome and Microsoft Edge) installed can access web Bluetooth functionality directly through the browser to perform this verification method, this is not available in mobile Safari or Chrome. Additionally, our SDKs: - Support **Vendor sign-in**, where your users are redirected to vendors during the sign-in process for select authentication methods. Using vendor sign-in will result in improved speed, stability, and linking success rates. - Are required to facilitate sign-in for some vendors such as Nest. For the most up-to-date list, refer to the integration notes found under your client's Enabled brands setting. ![Link UI SDK](https://developers.enode.com/images/link-sdks/enode-link_sdk-cover-1.png) ## Prerequisites - A native app integrating with Enode, either for - iOS 16+ or - Android 7.0+ (API level 24+) - A configured Enode client and a valid access token ([quick start guide](https://developers.enode.com/docs/getting-started/make-your-first-api-call)) - A version of the Link SDK for your respective platform - Access to the Enode at API version ≥ `2024-01-01` (see our [migration guide](https://developers.enode.com/docs/link-ui-v3-to-v4)) ## Create a link session Before you can show Link UI in your app, you first must create a link session and pass its `linkToken` to your application. To create a link session, call the [Link user](https://developers.enode.com/api/reference#postUsersUseridLink) endpoint from your server with API version `2024-01-01` and extract the `linkToken` property from the response. Redirects in Android apps: When supplying a `redirectUri` for a token that will be used in an Android app, provide a deeplink to your application. This way, the user will be redirected there once they hit the "Complete" button in Link UI.Supplying an HTTP web URL as a `redirectUri` used in Android apps could force your users to close Link UI manually after linking, which will not register as a linking success to your Android app. ```bash {% title="Request sample" %} curl https://enode-api.{ENVIRONMENT}.enode.io/users/{USER_ID}/link \ -X POST \ -H "Enode-Version: 2024-01-01" ## <-- Ensure you are using the right API version -H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "vendorType": "vehicle", "language": "en-US", "scopes": [ "vehicle:read:data", "vehicle:read:location", "vehicle:control:charging" ], "colorScheme": "system", "redirectUri": "yourapp://integrations/enode" ## <-- On Android, use an app deeplink }' ``` ```json {% title="Response sample" %} { ..., "linkToken": "DxwPa..." } ``` The `linkToken` is the common input needed for both the iOS and the Android SDKs. ## Integrating the Link SDKs Continue to our guides for iOS, Android and React Native to learn how to integrate the Link SDKs into your app. [Link SDK for iOS](https://developers.enode.com/docs/link-sdks/ios) [Link SDK for Android](https://developers.enode.com/docs/link-sdks/android) [React Native](https://developers.enode.com/docs/link-sdks/react-native)