Skip to main content

Overview

Encore requires user identification to track entitlements and prevent abuse across devices. You can also set user attributes to enable targeted offers and personalization.

Anonymous Users

Encore automatically generates a random user ID that persists until the user deletes/reinstalls your app or calls reset(). This anonymous ID is stored securely on the native side and allows entitlement tracking to work immediately without requiring explicit user identification.

Identified Users

If you use your own user management system, call identify when you have a user’s identity:
This enables the SDK to:
  • Associate promotional access with your user account
  • Sync entitlements across devices when the user logs in
  • Track conversion attribution accurately

Setting User Attributes

Strongly recommended. Country and language already shape which offers a user is shown. Once you know who the user is, send what your app already knows, such as country and anything of your own in custom. Gender is accepted only from an app rated 18+ in its store listing, so leave it out otherwise.
Encore follows the device language. If your app has its own language picker, also call setLanguage with the user’s choice.
Only pass what you have a lawful basis to share, such as the user’s consent. Pass the user’s age in whole years as age, or their date of birth as dateOfBirth (YYYY-MM-DD), whichever your app has. The SDK works the age out on the device and never sends the date; given both, it uses the lower age. If you hold only a range, send its lowest end as age. A user under 18 is still served offers, from age-appropriate inventory only and with no per-user personalization. See Sending an age.
User attributes enable personalized offers, audience targeting, and conversion context tracking. Set attributes using the EncoreUserAttributes class. Every value is a string except age, a whole number of years; dateOfBirth is a YYYY-MM-DD string. Use the custom map, which takes strings, for app-specific fields. See EncoreUserAttributes for every field and its format:
You can also set attributes when identifying:
setUserAttributes() merges with existing attributes. It does not replace them. Attributes passed to identify() do the opposite: they replace the stored set, so prefer setUserAttributes() for later updates.

Resetting User Identity

When a user logs out, call reset():
This will:
  • Reset the user ID to a new auto-generated anonymous ID
  • Clear cached entitlement data (iOS)
  • Clear all user attributes
Your registered EncorePurchaseController survives reset(). It is app-level infrastructure, not user state, so logging a user out does not require re-registering it (and it cannot be re-registered outside configure).

Full Example


Apps Without Login

If your app doesn’t require users to log in, you don’t need to call identify. The SDK uses an auto-generated anonymous ID. You can still set attributes:

Next Steps

  • Present Offers: present a reward sheet at a moment your user just earned, and read the result
  • Add Subscription Product: Reduce Churn only. Create a subscription product and connect it to Encore