LogoLogo
SDK ReferenceChangelogBlogStatusGet HelpGo To Dashboard
  • Introduction
  • Basics
    • How ContextDecision Works
    • How ContextPush Works
    • Getting Started
  • Context Decision
    • Logging Conversions
    • Revenue Outcomes
      • Logging Revenue with RevenueCat
    • Adding Entry Points
    • Release Checklist
    • Advanced
      • Custom Signals
      • Alternative Outcomes
      • Custom Outcome Metadata
      • Listening for Good Moments
      • Model Distribution Methods
      • Custom A/B Test Segmentation
      • Analytics & Reporting
  • Context Push
    • Integrating ContextPush
    • Push Notification Providers
      • OneSignal
      • Customer.io
      • Simple Web Request
    • Release Checklist
    • Analytics & Reporting
  • Discover By Use Cases
    • Multivariate Monetization
    • Inline Banners
  • Other Information
    • Glossary
    • Updating Your SDK
    • Minimum SDK Requirements
    • FAQ
    • Get Help
    • Changelog
  • Advanced
    • Custom Configuration
    • Capturing Context In Key Moments
Powered by GitBook
On this page
  • What devices does ContextSDK support?
  • Does ContextSDK require any additional iOS permissions?
  • Does ContextSDK use any type of PII?
  • Does the SDK support Objective-C?
  • How does the ML model training work?
  • How do OTA model deployments work?
  • Is there support for Swift Async Await?
  • How does ContextSDK address data drift?
  • Is ContextSDK aware of its own past decisions?
  • How can I prevent test or development data from affecting the ML model?

Was this helpful?

  1. Other Information

FAQ

Get answers to common questions about ContextSDK.

PreviousMinimum SDK RequirementsNextGet Help

Last updated 19 days ago

Was this helpful?

What devices does ContextSDK support?

ContextSDK works on iOS and iPadOS devices as well as Android smartphones. It does not support devices that run macOS, watchOS, tvOS, or visionOS.

Does ContextSDK require any additional iOS permissions?

No, ContextSDK was built to work without any iOS permissions: all data that is used to determine the users real world context is accessible to any app, and only uses official Apple APIs (no private APIs). No ATT is needed.

Does ContextSDK use any type of PII?

No, ContextSDK was designed from the ground up to operate without the use of any PII (Personally Identifiable Information). The SDK does not process or store any PII. Also, as per our agreement, you must not send any PII to ContextSDK, as part of any of the parameters or events you send via the SDK.

Does the SDK support Objective-C?

Currently, due to limited demand, we don’t support Objective-C. However, we can add it easily if you’re interested — !

How does the ML model training work?

  • There is no on-device ML model training. No CPU or battery will be used for ML model training on your user's phones.

  • All ML model training happens on our servers, and only after your app has logged enough data.

  • Once the training of your custom ML model is ready, we can deploy your ML model over-the-air (OTA), or alternatively provide you with your own ContextSDK binary. See Model Distribution Methods for more details.

How do OTA model deployments work?

When ContextSDK collects the context data, the response of those network requests include the info about the latest available model. Unless you don't want to enable over-the-air updates (OTA) for your custom model, you don't need to do anything, and we will notify you once a new model is about be released.

Is there support for Swift Async Await?

Note: You should only do this with fetchContext or calibrate. Doing this with optimize could have unintended consequences.

How does ContextSDK address data drift?

Data drift occurs when changes in an app’s environment — such as pricing adjustments, seasonal trends, or gameplay dynamics — affect revenue and model performance over time. To mitigate this, ContextSDK offers adaptive model training tailored to your needs.

Instead of retraining models every 2–4 weeks, you can opt for more frequent updates — such as weekly or every other day — to ensure the models stay aligned with real-world changes. Additionally, our system can prioritize recent data, giving greater weight to the most relevant insights.

While our data science team currently applies careful manual oversight to these updates, fully automated hourly or daily retraining isn’t yet available. However, you can send custom signals to refine data processing, allowing us to filter specific inputs based on your business needs. If your app undergoes significant changes — such as a redesigned experience or pricing adjustments — let us know. This helps ensure that models properly account for shifts in user behavior.

These updates roll out over the air to all apps automatically. Because our models are lightweight — typically around 500 KB — they have no impact on app performance or startup time.

Is ContextSDK aware of its own past decisions?

Not yet. If your app evaluates context too frequently, the SDK may identify consecutive moments as “good moments” — especially if the user’s context hasn’t changed significantly. This is because the SDK currently has no built-in memory or cooldown mechanism. To avoid disrupting your app’s experience, we recommend implementing your own cooldown logic, such as: "show at most 1 paywall per app session" or "wait at least 1 hour between showing paywalls".

How can I prevent test or development data from affecting the ML model?

No action is needed!

Even if you’re using the same bundle identifier across development, staging, and production, ContextSDK automatically distinguishes between real user data and internal or test data. This means events generated by your QA team, automation tests, or local development builds won’t influence the machine learning model.

Feel free to test as much as you need. Your production model remains unaffected.

Long-term, deploying new models will be self-serve on our , which will allow you to rollout new models, monitor their performance, and more. Currently, we're coordinating this process manually with you.

We don’t support async await at the moment, but you can use ContextSDK as an async function by .

let us know
dashboard
wrapping it in a continuation