diff --git a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt index 60fa61bd3..74738d876 100644 --- a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt +++ b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt @@ -80,6 +80,7 @@ import org.mozilla.fenix.ext.isKnownSearchDomain import org.mozilla.fenix.ext.setCustomEndpointIfAvailable import org.mozilla.fenix.ext.settings import org.mozilla.fenix.nimbus.FxNimbus +import org.mozilla.fenix.onboarding.ensureMarketingChannelExists import org.mozilla.fenix.perf.MarkersActivityLifecycleCallbacks import org.mozilla.fenix.perf.ProfilerMarkerFactProcessor import org.mozilla.fenix.perf.StartupTimeline @@ -367,6 +368,16 @@ open class FenixApplication : LocaleAwareApplication(), Provider { } } + // For Android 13 or above, prompt the user for notification permission at the start. + // Regardless if the user accepts or denies the permission prompt, the prompt will occur only once. + fun queueNotificationPermissionRequest() { + if (SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + queue.runIfReadyOrQueue { + ensureMarketingChannelExists(this) + } + } + } + initQueue() // We init these items in the visual completeness queue to avoid them initing in the critical @@ -376,6 +387,7 @@ open class FenixApplication : LocaleAwareApplication(), Provider { queueReviewPrompt() queueRestoreLocale() queueStorageMaintenance() + queueNotificationPermissionRequest() } private fun startMetricsIfEnabled() {