SDK quickstart
The whole path, from an empty project to an Appwin screen showing inside your app. Allow about ten minutes.
This page is the road map. Each step says what you do and why, then points to the page that carries the detail for all four platforms. Nothing is duplicated here: when a command changes, it changes in one place.
1. Get your App ID
In the dashboard: Community → Customise, or Support → Settings. It is the same identifier for every product of a given project.
The App ID is public - it ships inside your app binary. It routes requests to your project; it opens no access to your studio's data.
2. Install and configure the foundation
You install AppwinCore, then the module for the product you want. Core
carries the device identity, the session and the network client; the products
are only consumers of it, and none of them works without it. configure is
also called on Core, which is why it is declared explicitly.
One configure at launch, whatever the number of products you integrate.
→ Install the SDK carries the coordinates, the minimum versions, the snippets for SPM, Gradle, npm and pub, and how to check the session opens.
Come back here once deviceId answers something other than null.
3. Attach your user
Optional, but it is what makes a person the same in Community and in Support,
and across devices. The externalId is yours, the one from your database:
Appwin does not interpret it.
AppwinCore.identify(externalId: user.id)
try await AppwinCore.bootstrapSession(externalId: user.id)
await AppwinCore.signOut() // on sign-out
identify alone is not enough. Replaying the bootstrap mints a token that
carries the new identity; without it, the calls that follow stay on the
anonymous session until the next launch. On React Native, where Core does not
expose the externalId variant, the product's login does it for you.
→ Identity details the three states: anonymous, attached, enriched.
4. Wire a product
Each product is added through its module, and must be enabled in the dashboard. Two things have to be true: your plan includes the product, and the product is switched on for this project.
Initialise it, then gate your own UI
AppwinCore.configure is the only call that never checks anything: it prepares
the device identity and the network client. Each product then has its own
initialize(), which asks the server whether it may open, and answers rather
than throwing.
let support = await AppwinSupport.initialize()
print("Appwin Support: \(support)")
Gate your own entry point on that result. The SDK cannot hide your tab or your help button: it does not own your navigation, only you do. What the SDK does guarantee is that it never crashes and never silently does nothing. A refused product logs loudly in a debug build, quietly in release, and its screens fall back to a neutral view if presented anyway.
initialize() is cheap: the three products share one server round trip, and
the verdict is cached on disk. Offline, the SDK falls back to the last known
answer rather than closing a product you pay for. Only a first launch with no
network and no cache is undecided, and that answers unknown, which means
"retry", not "no".
| Result | What it means | What to do |
|---|---|---|
ready | Open. | Show your entry point. |
unavailable, reason plan | Your plan does not include this product. | Upgrade, or hide the feature. |
unavailable, reason disabled | Switched off for this project. | Turn it on in the dashboard. |
notConfigured | AppwinCore.configure was never called. | Fix the integration. |
unknown | No network and no cached verdict. | Retry later; do not treat it as a no. |
What each product adds
| Product | What you add | Where to enable it |
|---|---|---|
| Community | A view to embed: AppwinCommunity.communityView() (iOS), CommunityView() (Android), <AppwinCommunityView /> (RN), AppwinCommunityView() (Flutter) | Community → Customise |
| Support | A modal presentation: AppwinSupport.presentMessenger(), or the MessengerView view | Support → Settings |
| Notifications | No UI: AppwinNotifications.registerPushToken(...) at launch, then trackEvent(...) | Notifications → Settings |
This is where you finally see something on screen. The step by step for each product, with snippets for all four platforms, lives under SDK → Integration in the dashboard.
Something is wrong?
The table of common symptoms is in Install the SDK.
Next
- Concepts - what a project, an App ID and an end-user are
- Mobile SDK - what Core carries, what the products carry
- Community - showing the feed, customisation, localisation