Overview of Android 13 push subscription changes

Android 13 introduces a runtime notification permission, meaning users must opt in to receive push notifications. Apps targeting Android 13 must explicitly prompt for permission at a time of their choosing, or the system will display the permission prompt automatically on first launch—often resulting in lower opt-in rates.

To implement an ideal experience:

  • Update to the latest version of the OneSignal SDK v4.8.1+
  • Target Android API level 33+
  • (Optional) Use an in-app message with a push permission prompt to explain value before requesting permission

If you don’t take action, Android 13 will show the permission prompt automatically on first app open—an interruptive and less effective moment.


Understanding Android 13 push permission behaviors

Android 13 permission behavior depends on the OS version, app target SDK, and how the user interacts with the system prompt:

Allow

  • Upgraded devices: Users who previously granted push permission on Android 12 or lower are grandfathered in.
  • New installs on Android 13: Default to “don’t allow”. You must prompt them explicitly.
  • Apps targeting Android 13: Gain full control over when to prompt.
  • Apps targeting Android 12 or lower: System will auto-show the prompt on first launch after install/update.

Don’t Allow

  • If the user selects “Don’t Allow”, you cannot send them notifications.
  • They won’t be prompted again unless:
    • They reinstall the app, or
    • You update your app to target Android 13 and prompt them explicitly.

Ignored

  • If the user dismisses the dialog without choosing, the permission remains in the default denied state.

How to prompt for push permission

Use in-app messages to create a better opt-in experience or our SDK directly to trigger the prompt.

See our Prompt for Push Permissions guide for details.


Updating Your App for Android 13

Step 1. Update Your OneSignal SDK

We recommend updating to the latest version of our SDK.

Step 2. Update project settings to target Android 13

Validate that your app is configured to target Android API level 33 or newer, and follow one of the sections below for the type of project you have.

Android Native Validate your compile and target SDK version is at least version 33

app/build.gradle
android {
    compileSdkVersion "33"

    defaultConfig {
        targetSdkVersion "33"
    }
}

See Google’s Set up the Android 13 SDK for more details if you have a different project configuration.

Unity Use Unity 2021.3.0f1 or newer.

Add Android 13 as a custom dependency to the Unity Editor’s Android SDK Tools. See Unity’s Customizing dependencies guide.

Set the Target API Level to API level 33 in the Android Player Settings. See Unity’s Setting the Android SDK Target API guide.

Flutter Validate your compile and target SDK version is at least version 33.

android/app/build.gradle
android {
    compileSdkVersion 33

    defaultConfig {
        targetSdkVersion 33
    }
}

React Native Validate your compile and target SDK version is at least version 33.

android/app/build.gradle
android {
    compileSdkVersion 33
    ...

    defaultConfig {
        ...
        targetSdkVersion 33
    }
}

Cordova / Ionic Requirements:

  • Ionic Capacitor v2 or higher
  • Or Cordova Android Platform 9.1.0 or higher

Validate your target SDK version is at least version 33.

app/build.gradle
android {
    compileSdkVersion 33
    ...

    defaultConfig {
        ...
        targetSdkVersion 33
    }
}

Set the Compile Sdk Version to 33

In Default Config, set the Target SDK Version to 33.

Step 3. Add Notification Permission Prompt

See our Prompt for Push Permissions guide for details.

You are now ready to prompt your Android users for push notification permissions!