From 125be804f5d36c45ac983aa11d897b680f1d5102 Mon Sep 17 00:00:00 2001 From: Roger Yang Date: Tue, 29 Nov 2022 12:29:05 -0500 Subject: [PATCH] [fenix] Close https://github.com/mozilla-mobile/fenix/issues/28021: Add ability to opt in to receiving push notifications on Android 13+ devices --- .../main/java/org/mozilla/fenix/FenixApplication.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/org/mozilla/fenix/FenixApplication.kt b/app/src/main/java/org/mozilla/fenix/FenixApplication.kt index 60fa61bd37..74738d8760 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() {