Skip to content
This repository has been archived by the owner on Nov 25, 2024. It is now read-only.

UnifiedPush support #3135

Closed
johnlpe opened this issue Jul 5, 2023 · 6 comments
Closed

UnifiedPush support #3135

johnlpe opened this issue Jul 5, 2023 · 6 comments

Comments

@johnlpe
Copy link

johnlpe commented Jul 5, 2023

Please add support for UnifiedPush push notification protocol/standard.

We need push notifications, but we don’t want use centralized online service that read we all notifications, like Android has Google Firebase Messaging Service and iOS has Apple Push Notification service. UnifiedPush protcol is the solution for this. UnifiedPush is open protocol/standard for connection between online service (Application Server) → notification service (Push Server) and notification service’s client (Push Distributor) → application (End User Application). It enables the user to choose the service through he receives his push notifications.

Especially GNU/Linux on mobile is very big need of push notifications and with UnifiedPush we can fix it.

@S7evinK
Copy link
Contributor

S7evinK commented Jul 5, 2023

Element Android already works pretty well with UnifiedPush (I'm using my own ntfy instance for this)
ntfy also implements the /_matrix/push/v1/notify endpoint, making it a push gateway. https://docs.ntfy.sh/publish/#matrix-gateway

So I do believe that on the server side there is nothing more we can do, I think it's more of a client thing.

(Also, welcome to Github :))

@S7evinK S7evinK closed this as completed Jul 5, 2023
@johnlpe
Copy link
Author

johnlpe commented Jul 5, 2023

Element Android already works pretty well with UnifiedPush (I'm using my own ntfy instance for this)
ntfy also implements the /_matrix/push/v1/notify endpoint, making it a push gateway. https://docs.ntfy.sh/publish/#matrix-gateway

I think we need:
On the server (Application Server): the ability to send notifications to the push notification server (Push Server) via UnifiedPush protocol and some way configure to which URL, account and password.
On the client (End User Application): the ability to receive notifications from Push Distributor via UnifiedPush and configure push notification settings of the Application Server. I think the support of the configure the Application Server in the web application is enough, but good if native clients also have it.

I don't see the configuration options in Element Web or others and I suspect Dendrite or Synapse doesn't have full support.

So I do believe that on the server side there is nothing more we can do, I think it's more of a client thing.

We also have lot of work with Push Systems/distributor softwares.

(Also, welcome to Github :))

You noticed too :D How? Checked who here again beg new features?

@S7evinK
Copy link
Contributor

S7evinK commented Jul 5, 2023

I think we need:
On the server (Application Server): the ability to send notifications to the push notification server (Push Server) via UnifiedPush protocol and some way configure to which URL, account and password.

Dendrite/Synapse both implement setting to which URL to send notifications to, but it is only sending to a Push Gateway. It is up to the Push Gateway how to deliver the message, be it UnifiedPush, GCM or some other way. And with ntfy on the client you can configure the account and password to use.

On the client (End User Application): the ability to receive notifications from Push Distributor via UnifiedPush and configure push notification settings of the Application Server. I think the support of the configure the Application Server in the web application is enough, but good if native clients also have it.

Element Android let's you configure which push provider you want to use, so if you have ntfy installed, you either have the choice to use that, background synchronization or, if using Google Services, GCM. This is stored in Dendrite/Synapse and if there's a notification both will notify the configured Push Gateway.

I don't see the configuration options in Element Web or others and I suspect Dendrite or Synapse doesn't have full support.

Element Web/Desktop is using responses to /sync (I think) to determine when to notify the user, so this only works when the client in question is running.

You noticed too :D How? Checked who here again beg new features?

Well, hovering over your name just said "Joined Github this month"

@johnlpe
Copy link
Author

johnlpe commented Jul 5, 2023

I think we need:
On the server (Application Server): the ability to send notifications to the push notification server (Push Server) via UnifiedPush protocol and some way configure to which URL, account and password.

Dendrite/Synapse both implement setting to which URL to send notifications to, but it is only sending to a Push Gateway. It is up to the Push Gateway how to deliver the message, be it UnifiedPush, GCM or some other way.

Why Dendrite/synapse don't implement UnifiedPush directly? (https://unifiedpush.org/spec/server/) And how connecton to a Push Gateway is authenticated?

And with ntfy on the client you can configure the account and password to use.

Unfortunately, ntfy doesn't implement proper authentication :( (binwiederhier/ntfy#808)

On the client (End User Application): the ability to receive notifications from Push Distributor via UnifiedPush and configure push notification settings of the Application Server. I think the support of the configure the Application Server in the web application is enough, but good if native clients also have it.

Element Android let's you configure which push provider you want to use, so if you have ntfy installed, you either have the choice to use that, background synchronization or, if using Google Services, GCM. This is stored in Dendrite/Synapse and if there's a notification both will notify the configured Push Gateway.

Does Element Web have this setting? In the UI?

@johnlpe
Copy link
Author

johnlpe commented Jul 9, 2023

@S7evinK

@S7evinK
Copy link
Contributor

S7evinK commented Jul 10, 2023

As written by clokep here, this should go into the matrix specification.

We can't just implement something in Dendrite with Apps (e.g. Element) not aware of native UP support. This would have to be implemented in apps as well. And if we just do something different then Synapse/other homeservers, we would end up with different End User Application implementations for each of the homeservers, which is not what we want.

We'd want something like POST /_matrix/v3/configureUnifiedPush with specific fields in the request, so servers/app wanting to use UP know exactly what to send and expect.

Suggest we discuss this over in matrix-org/sygnal#340

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants