▸Example Countly call (the "before")
import ly.count.android.sdk.Countly
import ly.count.android.sdk.CountlyConfig
val config = CountlyConfig(application, "YOUR_APP_KEY", "https://your-countly-server.com")
.setLoggingEnabled(true)
.setIdMode(DeviceIdType.OPEN_UDID)
Countly.sharedInstance().init(config)
Countly.sharedInstance().events().recordEvent(
"purchase",
mapOf("user_id" to userId, "value" to price, "currency" to "USD"),
1
)
Apple's App Tracking Transparency dialog is a measurable conversion-rate killer — denial rates of 50-80% are typical, and the wording is mostly outside your control. If an SDK in your app reads IDFA, ATT is required by Apple's App Review. Removing the SDK that needs it is the cleanest way to also remove the prompt.
☑Remove Countly cleanly
-
1
Remove the Countly SDK from your build (
Countly/ly.count.android:sdk/countly-sdk-react-native-bridge/countly_flutter) -
2
Remove
Countly.sharedInstance().start(with:)initialisation andrecordEvent(...)call sites -
3
Decide whether you'll keep the Countly server running for other apps, or decommission it as part of the migration
-
4
If you used Countly's crash reporting alongside analytics, plan a separate crash-reporter migration (Sentry / Crashlytics / Bugsnag)
⇋Countly vs Respectlytics — no att prompt
| Countly | Respectlytics | |
|---|---|---|
| Triggers ATT prompt on iOS | — see tool note above | No (SDK never calls ATTrackingManager) |
| Reads IDFA | — see tool note above | No |
| Requires NSUserTrackingUsageDescription in Info.plist | Yes (when reading IDFA) | No |
| App Store Privacy Label: Identifiers tier | Triggered | Not triggered by Respectlytics |
| Effect of users denying ATT | Reduced data quality | No effect (no IDFA path) |
❓Frequently asked questions
If we remove the ATT prompt, won't App Store Review reject our app?
No. Apple only requires ATT when an app or its SDKs actually track users across other apps or websites. If you remove the SDK that does that tracking, you should also remove NSUserTrackingUsageDescription from your Info.plist — keeping the key when no code calls ATTrackingManager.requestTrackingAuthorization is itself a flag Apple's review notes.
How do we still attribute installs to ad campaigns without IDFA?
Use Apple SKAdNetwork (and the newer AdAttributionKit on iOS 17.4+). Both are first-party Apple frameworks designed exactly for this — no IDFA, no ATT prompt, deterministic install attribution within Apple's privacy boundary. Your ads platform (Apple Search Ads / Google Ads / Meta) supports them directly.
Does Respectlytics still work if some users have ATT denied in other apps?
Yes — Respectlytics doesn't read IDFA at all, so the ATT state is irrelevant to it. Your Respectlytics data quality is the same for users who denied ATT in other apps as for users who allowed it.
What about the conversion-rate hit from showing ATT?
That goes away when you remove the prompt. Anecdotally teams report a measurable engagement lift on first-session retention after removing ATT prompts that were shipped purely for analytics rather than for ad attribution.