From 20f80dafd037af9f275c1919f8f382f9feea67c8 Mon Sep 17 00:00:00 2001 From: sim Date: Wed, 6 Aug 2025 11:39:57 +0200 Subject: [PATCH] Add notifications for UnifiedPush unregistrations/failures --- .../main/java/chat/simplex/app/PushService.kt | 17 +++++++++++++++-- .../simplex/app/model/NtfManager.android.kt | 3 +++ .../commonMain/resources/MR/base/strings.xml | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/PushService.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/PushService.kt index f3cfb06679..37d3a72ad1 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/PushService.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/PushService.kt @@ -3,6 +3,9 @@ package chat.simplex.app import chat.simplex.common.model.CC import chat.simplex.common.platform.Log import chat.simplex.common.platform.chatModel +import chat.simplex.common.platform.ntfManager +import chat.simplex.common.views.helpers.generalGetString +import chat.simplex.res.MR import kotlinx.coroutines.* import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @@ -58,12 +61,22 @@ class PushService: PushService() { override fun onRegistrationFailed(reason: FailedReason, instance: String) { Log.d(TAG, "onRegistrationFailed: $reason") - // TODO: notification to inform about failed registration + val title = generalGetString(MR.strings.icon_descr_instant_notifications) + val text = when (reason) { + FailedReason.NETWORK -> generalGetString(MR.strings.unifiedpush_registration_failed_network) + FailedReason.VAPID_REQUIRED, // Should not happen, VAPID will be required + FailedReason.INTERNAL_ERROR -> generalGetString(MR.strings.unifiedpush_registration_failed_unknown) + FailedReason.ACTION_REQUIRED -> generalGetString(MR.strings.unifiedpush_registration_failed_action) + + } + ntfManager.showMessage(title, text) } override fun onUnregistered(instance: String) { Log.d(TAG, "onUnregistered") - // TODO: notification to inform about unregistration + val title = generalGetString(MR.strings.icon_descr_instant_notifications) + val text = generalGetString(MR.strings.unifiedpush_unregistered) + ntfManager.showMessage(title, text) CoroutineScope(Dispatchers.Default).launch { chatModel.controller.sendCmd( null, diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/model/NtfManager.android.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/model/NtfManager.android.kt index 5d8371708c..fda263063b 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/model/NtfManager.android.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/model/NtfManager.android.kt @@ -230,6 +230,9 @@ object NtfManager { val builder = NotificationCompat.Builder(context, MessageChannel) .setContentTitle(title) .setContentText(text) + .setStyle( + NotificationCompat.BigTextStyle().bigText(text) + ) .setPriority(NotificationCompat.PRIORITY_HIGH) .setGroup(MessageGroup) .setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN) diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml index b2d8791cd7..a8a5e5a68b 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -293,6 +293,10 @@ You don\'t have any push service installed on your device.\n\nPlease installed one and try again.\n\nFor more information, visit\ Select Push Service Multiple push services are installed on your system, please select the service you wish to use. + SimpleX is no longer registered with your UnifiedPush distributor. The distributor may have been uninstalled or been logged out. You should reset your notifications settings. + Registration with your UnifiedPush distributor failed due to a network issue. Please try again when your network is back. + Registration with your UnifiedPush distributor failed due to a missing requirement from your distributor. + Registration with your UnifiedPush distributor failed due to an unknown issue. This could be a missing requirement from your distributor. SimpleX Lock