show test notification + modify doc

show test notification from
occ notification:test-push --talk username

This will directly show the push notification without to fetch any data from nextcloud instance.

Additionally some additions to documentation were made

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2024-02-20 13:51:59 +01:00
parent 4ff8b16226
commit fde635d61b
No known key found for this signature in database
GPG key ID: C793F8B59F43CE7B
2 changed files with 28 additions and 10 deletions

View file

@ -172,13 +172,19 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
for (notificationId in pushMessage.notificationIds!!) { for (notificationId in pushMessage.notificationIds!!) {
cancelNotification(context, signatureVerification.user!!, notificationId) cancelNotification(context, signatureVerification.user!!, notificationId)
} }
} else if (isSpreedNotification()) { } else if (isTalkNotification()) {
Log.d(TAG, "pushMessage.type: " + pushMessage.type) Log.d(TAG, "pushMessage.type: " + pushMessage.type)
when (pushMessage.type) { when (pushMessage.type) {
TYPE_CHAT, TYPE_ROOM, TYPE_RECORDING, TYPE_REMINDER -> handleNonCallPushMessage() TYPE_CHAT, TYPE_ROOM, TYPE_RECORDING, TYPE_REMINDER -> handleNonCallPushMessage()
TYPE_REMOTE_TALK_SHARE -> handleRemoteTalkSharePushMessage() TYPE_REMOTE_TALK_SHARE -> handleRemoteTalkSharePushMessage()
TYPE_CALL -> handleCallPushMessage() TYPE_CALL -> handleCallPushMessage()
else -> Log.e(TAG, "unknown pushMessage.type") else -> Log.e(TAG, pushMessage.type + " is not handled")
}
} else if (isAdminTalkNotification()) {
Log.d(TAG, "pushMessage.type: " + pushMessage.type)
when (pushMessage.type) {
TYPE_ADMIN_NOTIFICATIONS -> handleTestPushMessage()
else -> Log.e(TAG, pushMessage.type + " is not handled")
} }
} else { } else {
Log.d(TAG, "a pushMessage that is not for spreed was received.") Log.d(TAG, "a pushMessage that is not for spreed was received.")
@ -187,6 +193,12 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
return Result.success() return Result.success()
} }
private fun handleTestPushMessage() {
val intent = Intent(context, MainActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
showNotification(intent, null)
}
private fun handleNonCallPushMessage() { private fun handleNonCallPushMessage() {
val mainActivityIntent = createMainActivityIntent() val mainActivityIntent = createMainActivityIntent()
if (pushMessage.notificationId != Long.MIN_VALUE) { if (pushMessage.notificationId != Long.MIN_VALUE) {
@ -315,7 +327,9 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
} }
} }
private fun isSpreedNotification() = SPREED_APP == pushMessage.app private fun isTalkNotification() = SPREED_APP == pushMessage.app
private fun isAdminTalkNotification() = ADMIN_NOTIFICATION_TALK == pushMessage.app
private fun getNcDataAndShowNotification(intent: Intent) { private fun getNcDataAndShowNotification(intent: Intent) {
val user = signatureVerification.user val user = signatureVerification.user
@ -419,11 +433,12 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
) { ) {
var category = "" var category = ""
when (pushMessage.type) { when (pushMessage.type) {
TYPE_CHAT, TYPE_ROOM, TYPE_RECORDING, TYPE_REMINDER, TYPE_REMOTE_TALK_SHARE -> { TYPE_CHAT, TYPE_ROOM, TYPE_RECORDING, TYPE_REMINDER, TYPE_ADMIN_NOTIFICATIONS, TYPE_REMOTE_TALK_SHARE ->
category = Notification.CATEGORY_MESSAGE category = Notification.CATEGORY_MESSAGE
}
TYPE_CALL -> category = Notification.CATEGORY_CALL TYPE_CALL ->
category = Notification.CATEGORY_CALL
else -> Log.e(TAG, "unknown pushMessage.type") else -> Log.e(TAG, "unknown pushMessage.type")
} }
@ -479,7 +494,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
when (pushMessage.type) { when (pushMessage.type) {
TYPE_CHAT, TYPE_ROOM, TYPE_RECORDING, TYPE_REMINDER, TYPE_REMOTE_TALK_SHARE -> { TYPE_CHAT, TYPE_ROOM, TYPE_RECORDING, TYPE_REMINDER, TYPE_ADMIN_NOTIFICATIONS, TYPE_REMOTE_TALK_SHARE -> {
notificationBuilder.setChannelId( notificationBuilder.setChannelId(
NotificationUtils.NotificationChannels.NOTIFICATION_CHANNEL_MESSAGES_V4.name NotificationUtils.NotificationChannels.NOTIFICATION_CHANNEL_MESSAGES_V4.name
) )
@ -1012,7 +1027,9 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
private const val TYPE_RECORDING = "recording" private const val TYPE_RECORDING = "recording"
private const val TYPE_REMOTE_TALK_SHARE = "remote_talk_share" private const val TYPE_REMOTE_TALK_SHARE = "remote_talk_share"
private const val TYPE_REMINDER = "reminder" private const val TYPE_REMINDER = "reminder"
private const val TYPE_ADMIN_NOTIFICATIONS = "admin_notifications"
private const val SPREED_APP = "spreed" private const val SPREED_APP = "spreed"
private const val ADMIN_NOTIFICATION_TALK = "admin_notification_talk"
private const val TIMER_START = 1 private const val TIMER_START = 1
private const val TIMER_COUNT = 12 private const val TIMER_COUNT = 12
private const val TIMER_DELAY: Long = 5 private const val TIMER_DELAY: Long = 5

View file

@ -22,6 +22,8 @@ If your problem still occurs after checking all these hints, create an issue at
### 🤖 Check android settings ### 🤖 Check android settings
Please check the "Notifications" section in the app settings which should show warnings if anything needs to be
adjusted.
Please take into account that the android settings might be different for each manufacturer. Please take into account that the android settings might be different for each manufacturer.
It might be worth it to check what other messaging apps recommend to get their apps running on a certain smartphone and adapt this to the talk app. It might be worth it to check what other messaging apps recommend to get their apps running on a certain smartphone and adapt this to the talk app.
Also [https://dontkillmyapp.com/](https://dontkillmyapp.com/) might be good starting point. Also [https://dontkillmyapp.com/](https://dontkillmyapp.com/) might be good starting point.
@ -91,9 +93,8 @@ Data to encrypt is: {"nid":525210,"app":"admin_notification_talk","subject":"Tes
Signed encrypted push subject Signed encrypted push subject
Push notification sent successfully Push notification sent successfully
``` ```
This means the notifications are set up correctly on server side. Note that there won't be any notification on the This means the notifications are set up correctly on server side. A notification should be displayed on the device.
phone as this is just a test-message which won't be handled (As a developer you could set a breakpoint in the If there is no notification shown on the device, please focus on the settings of the talk android app.
"onMessageReceived"-method of the Firebase cloud messaging handling to check if the notification is received).
If it prints something like If it prints something like
``` ```