Mobile SDKs

What the SDKs send, and consent

The LocalizeMe iOS and Android SDKs download your app's strings over the air. This page lists everything they store and send, so you can describe them in your privacy policy and in a consent tool such as Usercentrics, OneTrust or Didomi.

Three consent levels

Your app tells the SDK what it may do. Strings that were already downloaded keep showing at every level, falling back to the ones shipped in the app.

LevelNetworkKept on the deviceSent to LocalizeMe
Full (default)
.full
Consent.FULL
YesStrings and a random install idSDK key; SDK, app and OS version; language; install id; SDK errors and missing keys
Strings only
.stringsOnly
Consent.STRINGS_ONLY
YesStringsSDK key and SDK version only
Off
.off
Consent.OFF
NoneStrings already downloadedNothing

Going below full consent deletes the install id and drops any reports waiting to be sent. Granting full consent again creates a new, unrelated id.

Each item, explained

SDK key

Identifies your project, not the user. It ships inside your app and is the same on every install.

Install id

A random UUID the SDK makes on first launch and keeps in the app's own storage. It is not a device identifier, is never joined to a person, and a reinstall makes a new one. Sent only at full consent.

App, OS and SDK version, language

Used to serve the right strings to each app version and to show version spread on the dashboard. Only the SDK version is sent below full consent.

Errors and missing keys

Failures the SDK hit and keys the app asked for that no bundle had. Missing-key reports are off unless you turn them on. Never sent below full consent.

IP address

Like any network request, it reaches Cloudflare and our servers. It is used for rate limiting requests that carry no install id. It appears in our host's short rolling request log and is never stored with the data above.

Strings on the device

The downloaded translations, kept in the app's cache so they work offline. They contain your app's copy, nothing about the user.

The SDKs collect no advertising id, device id, name, email, location or contacts, and do not track what users do in the app.

Connecting a consent tool

The level is not remembered between launches, because your consent tool is the record. Start the SDK at the level the tool last gave, or at off until it answers, and call setConsent whenever the user changes their choice. A call made before the SDK starts is kept.

// iOS
var config = LocalizeMeConfiguration(sdkKey: "lzs_…")
config.consent = .off              // until the consent tool answers
LocalizeMe.start(config)

LocalizeMe.setConsent(granted ? .full : .stringsOnly)
// Android
LocalizeMe.start(this, LocalizeMeConfig(sdkKey = "lzs_…", consent = Consent.OFF))

LocalizeMe.setConsent(if (granted) Consent.FULL else Consent.STRINGS_ONLY)

Which level a refusal maps to is your decision. Strings only sends nothing about the install, so many teams treat it as functional. If a refused service must not reach the network at all, map a refusal to off. The SDK READMEs on GitHub have the full setup for iOS and Android.

Effect on the dashboard

Install counts, app and OS versions, SDK errors and missing keys come only from installs at full consent. With many users on strings only, the dashboard shows fewer installs than you have. Downloads still reach every user who is not at off.

Questions

Do the LocalizeMe SDKs need consent under GDPR?

At full consent the SDK stores a random install id on the device, which ePrivacy rules may treat as needing consent. At strings only it stores and sends nothing about the install. How you classify each level is your decision; this page lists the facts.

Does the SDK use the advertising id or device id?

No. The only identifier is a random install id the SDK creates itself, sent only at full consent.

What happens when the user withdraws consent?

Call setConsent with a lower level. The install id is deleted from the device at once and pending reports are dropped. Strings already downloaded keep working.

Unlimited strings, one flat price

LocalizeMe never counts keys, strings or languages. Try Pro free for 14 days, no card needed.