KasyKasy

Permissions

Push, Face ID, and ATT. Each one shows up at the right moment, never all at once on Home.

The kit asks for three permissions, each one at the moment it makes sense. Never all at once on Home.

PermissionWhere it shows upOur own soft prompt?Platforms
PushOnboarding or a button in the Notifications tabOnly in onboardingiOS, Android
Face ID / biometricsSwitch in SettingsNoiOS, Android
ATT (tracking)Onboarding + Home (for those who skip)YesiOS only

Push

  • Whoever completes onboarding: sees the OnboardingNotificationsStep screen with an explanation. On continuing, the system's native dialog opens.
  • Whoever skips onboarding: no automatic prompt. The user taps the Notifications tab and, if the list is empty, sees an "Allow notifications" button → taps it → the native dialog opens. The tap itself is the confirmation of intent, so there's no soft prompt.

iOS and Android 13+ only let you show the native dialog once per install. If the user denies it, it can only be re-enabled from the system Settings.

When the user denies it and tries to re-enable it, the button changes to "Open settings" (gear icon) and calls openAppSettings().


Face ID / Touch ID / Biometrics

  • Only requested when the user turns on the switch in Settings.
  • Turning it on triggers native authentication right away.
  • If authenticated, BiometricGuard starts requiring authentication to open the app.
  • No soft prompt: the switch itself is the confirmation.

The biometric_enabled preference is per account (cleared on logout). That way, the next user on the same device starts with the lock off.


ATT: App Tracking Transparency (iOS)

ATT is iOS's "Allow app to track your activity" prompt. Apple only allows showing the native dialog once per install. That's why we use our own soft prompt first.

  • Whoever completes onboarding: sees OnboardingAttSetup with an explanation. On continuing → the iOS native dialog opens.
  • Whoever skips onboarding: on reaching Home (after 1.5s) → a KasyDialog explains tracking. If they accept ours → we call the native one. If they decline → we do NOT call the native one (preserving the one shot we get).

Retrying the soft prompt

Whoever declines the soft prompt gets asked again after 7 days, up to 3 attempts. After that, we stop. The flags live in SharedPreferences (att_soft_dismiss_count and att_soft_last_asked_at).

Android

ATT doesn't exist on Android.


What persists on logout

SettingBehavior on logout
Push permission (granted/denied)Kept (the OS controls it)
ATT permissionKept (the OS controls it)
Device biometricsKept (the OS controls it)
biometric_enabled (app switch)Cleared (it's per account)
ATT counters (att_soft_*)Kept (ATT is per device)

Last updated on 08/02/2026