One thing I’ve noticed is everytime I read a new message, the new message notification remains on other devices. You think there are new messages but actually you already read them. It would be great if the notifications could be updated so that they are removed from all the devices once the message was read.
In my case this is for iOS but I guess this happens cross platform.
Could you share which version of Mattermost server you have installed as well as which devices you’re seeing the issue on? Also, did you download the app from AppStore?
It might be that the device-specific settings for the app need to be changed on your device in order for this to happen.
I actually have noticed the same thing. An example would be I am away on my desktop and a notification is sent to mobile. Before interacting with my mobile device again I read the item on my desktop but the notification is still displayed on my mobile device. Any other app using push notifications would have had this removed when it was views on any other device.
I am running server v4.5.0
Desktop macOS 10.13.3 running the desktop app v3.7.1
iOS app 1.5.2 (from appstore)
Just updated to 4.6.0 to see if anything changed but it didn’t. I don’t see an option for ‘High Availability’ in the config file so my assumption is no. Reading the documentation on this feature though seems to indicate the use of a cluster which I don’t have as well. I am running off of a single server.
According to our mobile engineer, this has already been implemented and should work so I’m going to ask him to take a look at this issue to see if he has any ideas.
We did have a bug where a race condition was preventing notifications from clearing but this was happening only while using high availability.
I’ll try and explain how this works and why is actually working as expected.
Normally a push notification is sent to the device whenever you get a mention in any channel being public, private or in a group message channel, and you get a notification for every message in a Direct message channel.
In Android every push notification is grouped by the channel id where the mention was originated and that let us use the stack notifications functionality found in Android, then when you read the messages in the channel that dispatched those notifications we send another push notification to clear those that belong to the channel and voilá notifications get cleared.
iOS is a little bit different there is no way to stack notifications per channel that means that each notification is treated as unique and cannot be grouped by channel as we do in Android, yes is true that iOS has a way to clear every notification individually but the problem here is that we are not tracking the notification id for every push notification sent in every channel, so the only way they actually get dismissed from the device is when the mention count reaches zero (0) that way we sent a push notification to the device saying there are no notifications and they get cleared.
I know it can be a little annoying we have tried to come up with a solution to this but with the need to bring the app to feature parity this has fallen in priority a little bit.
We will be more than happy if someone can come up with a way an contribute the solution to the product as this will benefit the majority of the users.
So my understanding then is that if I get, for example, 5 notifications on my iOS device - 1 from channel a, 3 from channel b and 1 from channel c then upon checking all of those channels on my desktop then all the notifications on my iOS device should disappear?
If this is what is suppose to happen then it is not the behavior that i have been seeing.
Is there a way by which any iOS/android developer can be asked from the Mattermost team to work on this feature idea implementation? Can we have it in the pipeline atleast? This issue seems to be affecting a lot of users, particularly more annoying for iOS users.
I am not an iOS developer, but from what I can see is that we can have an API that posts a message to all logged in devices that a particular message has been read.
Easy way:
Only if the user reads all unread messages from all channels/DMs, then in that case use this:
Have the badge count set to 0, this should clear all delivered notifications from the notification center.
Difficult way:
Have a way by which we can keep a track of individual notification IDs, and once user reads a particular channel/DM, clear only those in the notification center. This will require a good amount of design discussion and DB changes by the Mattermost team.
Based on this post Update Notification Status On Devices Once Read, the push notification behaviour for iOS is a little different and we are still working on figuring out further improvements.