From 0c45f6950490e2fa6373f5b301873fe400e7fa42 Mon Sep 17 00:00:00 2001 From: sim Date: Tue, 5 Aug 2025 16:08:37 +0200 Subject: [PATCH] Register for push notifications on app startup --- .../src/main/java/chat/simplex/app/SimplexApp.kt | 2 ++ .../java/chat/simplex/app/platform/PushManager.kt | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt index 17414f9f33..c6ceaae725 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt @@ -20,6 +20,7 @@ import androidx.work.* import chat.simplex.app.MainActivity.Companion.OLD_ANDROID_UI_FLAGS import chat.simplex.app.model.NtfManager import chat.simplex.app.model.NtfManager.AcceptCallAction +import chat.simplex.app.platform.PushManager import chat.simplex.app.views.call.CallActivity import chat.simplex.common.helpers.* import chat.simplex.common.model.* @@ -270,6 +271,7 @@ class SimplexApp: Application(), LifecycleEventObserver { // Prevents from showing "Enable notifications" alert when onboarding wasn't complete yet if (chatModel.controller.appPrefs.onboardingStage.get() == OnboardingStage.OnboardingComplete) { SimplexService.showBackgroundServiceNoticeIfNeeded() + PushManager.initStart(context) if (appPrefs.notificationsMode.get() == NotificationsMode.SERVICE) withBGApi { platform.androidServiceStart() diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/platform/PushManager.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/platform/PushManager.kt index f5f78233a6..32cf239f5c 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/platform/PushManager.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/platform/PushManager.kt @@ -62,6 +62,20 @@ object PushManager { } } + /** + * Register to UnifiedPush distributor if any is already used + * + * To run when the app starts; call [chat.simplex.app.PushService.onUnregistered] + * if the distributor is uninstalled + */ + fun initStart(context: Context) { + Log.d(TAG, "Init UnifiedPush during app startup") + //TODO: limit to once a day to reduce registrations to ntf server ? + UnifiedPush.getAckDistributor(context)?.let { + register(context) + } + } + private fun register(context: Context) { // TODO: add VAPID UnifiedPush.register(context)