# Mobile SDKs: iOS, Android, React Native, and Flutter

The mobile SDKs render the same embeds and placements as the Web SDK, and add sign-in, deep links, push notifications, and in-app creation. All of them take the same brand API key from Brand Control Center (BCC) under Build › Publish Communities › SDK Integration; QA has its own key.

| Platform | Package | Current version | Minimum | Reference |
| --- | --- | --- | --- | --- |
| iOS | GenuinCore, GenuinUI, GenuinCamera, GenuinAI from https://github.com/genuininc/genuin_ios_sdk (Swift Package Manager or CocoaPods) | 2.1.5 | iOS 15.0 | [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps) |
| Android | com.begenuin:core, :ui, :camera, :ai (Maven Central) | 2.1.5 | API 24 | [Integrate the Genuin Android SDK](https://begenuin.com/developers/developer-resources/sdk/how-to-integrate-and-power-your-brand-community-in-android-apps) |
| React Native | genuin-react-native (npm) | 3.0.3 | Android API 24, iOS 15.1 | [Integrate the Genuin SDK with React Native apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-react-native-sdk-into-your-application) |
| Flutter | genuin_sdk (pub.dev) | 1.0.1, wrapping native 1.1.9.x | Flutter 3.24.4, Android API 24, iOS 13.0 | [Integrate the Genuin SDK with Flutter apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-flutter-sdk-into-your-application), [Initialize the Genuin SDK and load a feed in Flutter](https://begenuin.com/developers/developer-resources/sdk/flutter-sdk-developer-reference-how-do-i-initialize-the-genuin-sdk-and-load-a-feed) |
| Ads (iOS, Android, React Native) | IAB Standard Size Experience SDK | 0.0.5 iOS, 0.v3.11 Android, genuin-react-native-ads-v3 1.4.0 | — | [Add IAB Standard Size Experiences to an iOS app](https://begenuin.com/developers/developer-resources/sdk/integrate-the-genuin-ad-sdk-for-ios), [Add IAB Standard Size Experiences to an Android app](https://begenuin.com/developers/developer-resources/sdk/integrate-the-genuin-ad-sdk-for-android), [Add IAB Standard Size Experiences to a React Native app](https://begenuin.com/developers/developer-resources/sdk/integrate-ads-with-react-native-sdk) |

Modules depend on each other in one direction (`ai` → `camera` → `ui` → `core`) and must share one version.

## Initialize

```swift
let configuration = GenuinConfiguration.shared
configuration.environment = .prod   // .qa only with a QA key
GenuinSDK.shared.initialize(apiKey: "<<YOUR_API_KEY>>", configuration: configuration) { error in }
```

```kotlin
GenuinSDK.initSDK(this, "<<YOUR_API_KEY>>")                               // production
// GenuinSDK.initSDK(this, "<<YOUR_API_KEY>>", genuinEnv = GenuinEnv.QA)  // QA
```

**Render** – an embed (`GenuinEmbedView` on iOS and Android; `Carousel`, `StandardWall`, `Feed` components in React Native) or a placement (`GenuinPlacementView`, with a placement ID and style ID). Embed parameters are in [Embed configuration reference](https://begenuin.com/developers/get-started/any-business/embed-configuration-reference).

**Sign in** – `GenuinSDK.shared.ssoLogin(ssoToken:params:)` on iOS, `GenuinSDK.ssoLogin(context, ssoToken)` on Android (see [Auto login and token exchange](https://begenuin.com/developers/get-started/any-business/auto-login-and-token-exchange) and [Sign members out and handle expired sessions](https://begenuin.com/developers/developer-resources/sdk/sign-members-out-and-handle-expired-sessions)).

**Deep links and push** – white-label your hosted social experience's domain, host `apple-app-site-association` or `assetlinks.json`, and pass incoming links and notifications to the SDK (see [Handle Genuin deep links in your app](https://begenuin.com/developers/developer-resources/sdk/handle-genuin-deep-links-in-your-app) and [Set up push notifications in the Genuin SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/creation-and-editing-tools/notification/push/how-do-push-notifications-work-with-the-genuin-sdk)).

## API & SDK

Access: the calls in the table are the proposed Business Account API (see [Business Account API: provisioning, OAuth, and the resource map](https://begenuin.com/developers/get-started/any-business/business-account-api-provisioning-oauth-and-the-resource-map)), authenticated with a key scoped to the account and a role or an OAuth client acting for it; every confirmation in this article becomes a proposal you can approve by API (`POST /proposals/{proposalId}:approve`). Live today, the server API under `/api/thirdparty` authenticates with a `gn-access-token` (see [Generate an access token](https://begenuin.com/developers/developer-resources/api/generate-access-token-using-authentication-api)), and [Live API today and the Business Account API roadmap](https://begenuin.com/developers/developer-resources/guides/live-api-today-and-the-business-account-api-roadmap) maps what is live to what is proposed.

| Call | Purpose |
| --- | --- |
| GET /sdk/config | Runtime configuration the Web and mobile SDKs fetch on init (placements, experiences, kit) |
| POST /sessions | Auto login token exchange: your signed user token for a Genuin session |
| GET /placements/{placementId}/feed | Server-side render of the ranked feed for a page context (SSR and native apps) |

```js
// proposed server SDK (Business Account API)
import { Genuin } from '@genuin/sdk';
const genuin = new Genuin({ apiKey: process.env.GENUIN_KEY });
await genuin.sessions.create({ token });
await genuin.placements.feed(placementId, { context });
```

Live today: [Embed the Genuin Web SDK on your website](https://begenuin.com/developers/developer-resources/sdk/how-do-you-embed-and-configure-the-genuin-web-sdk-on-your-website) · [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps) · [Receive engagement events in your own analytics](https://begenuin.com/developers/developer-resources/sdk/receive-engagement-events-in-your-own-analytics) · [Add members to a community](https://begenuin.com/developers/developer-resources/api/add-members-to-a-community-programmatically-api).

SDKs: Web SDK 2.0.6 (see [Embed the Genuin Web SDK on your website](https://begenuin.com/developers/developer-resources/sdk/how-do-you-embed-and-configure-the-genuin-web-sdk-on-your-website)), iOS SDK 2.1.5 (see [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps)), Android SDK 2.1.5 (see [Integrate the Genuin Android SDK](https://begenuin.com/developers/developer-resources/sdk/how-to-integrate-and-power-your-brand-community-in-android-apps)), React Native 3.0.3 (see [Integrate the Genuin SDK with React Native apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-react-native-sdk-into-your-application)), and Flutter (see [Integrate the Genuin SDK with Flutter apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-flutter-sdk-into-your-application)) render Genuin and sign members in; the Node (`@genuin/sdk`) and Python (`genuin`) server SDKs are proposed with [Business Account API: provisioning, OAuth, and the resource map](https://begenuin.com/developers/get-started/any-business/business-account-api-provisioning-oauth-and-the-resource-map).
