From 44a611314aac6da06fe7560c48bf7dc17d8674ff 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 6e668c441e..b4b8247df2 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.* @@ -269,6 +270,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 a96c4a435f..f1534cb1db 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 @@ -73,6 +73,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)