Skip to content

Feat: Add Unifiedpush support#5883

Open
p1gp1g wants to merge 42 commits intonextcloud:masterfrom
p1gp1g:unifiedpush
Open

Feat: Add Unifiedpush support#5883
p1gp1g wants to merge 42 commits intonextcloud:masterfrom
p1gp1g:unifiedpush

Conversation

@p1gp1g
Copy link
Contributor

@p1gp1g p1gp1g commented Feb 18, 2026

Following web push support in nextcloud/notifications, we can add UnifiedPush support to Talk (and Nextcloud Android) to get push notifications even without the Play Services.

The implementation follows this guide: https://unifiedpush.org/developers/ux/

  • During first startup, the push notification is setup:
    • If the Play Services are available, they are used by default
    • Else, if UnifiedPush is available, it is used
    • If the app uses UnifiedPush and the user has many distributors, but hasn't selected a default yet (again, nearly never the case - the default is a OS wide default), a dialog is shown to introduce the OS screen.
  • Settings:
    • If a distributor is available, you have a new setting that allows to enable/disable UnifiedPush
    • If the user has many distributors (nearly never the case - but that means the user knows what UnifiedPush is!), a 2nd setting is offered, to change the distributor

This feature also gives the possibility to get Push Notifications with the Play Services, without the proxy (Nextcloud servers directly push to Google FCM servers), and without a proprietary library. So this is an accepted way to use FCM for application in F-Droid. => This is in a 2nd PR, already ready.

PS: The description is closed to Nextcloud PR, but the information apply here too

Fix #257

🖼️ Screenshots

🏚️ Before 🏡 After
image | image

🏁 Checklist

  • ⛑️ Tests (unit and/or integration) are included or not needed
  • 🔖 Capability is checked or not needed
  • 🔙 Backport requests are created or not needed: /backport to stable-xx.x
  • 📅 Milestone is set
  • 🌸 PR title is meaningful (if it should be in the changelog: is it meaningful to users?)

@p1gp1g
Copy link
Contributor Author

p1gp1g commented Feb 18, 2026

I got a conflict with my own previous PR 🙈 -> I'm fixing it

@AndyScherzinger AndyScherzinger requested review from mahibi, nickvergessen and sowjanyakch and removed request for sowjanyakch February 18, 2026 09:07
@AndyScherzinger AndyScherzinger added enhancement New feature or request 3. to review Waiting for reviews feedback-requested labels Feb 18, 2026
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
@nickvergessen nickvergessen removed their request for review February 18, 2026 09:11
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
…r users

Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
The endpoints are per user, and not general to all users

Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
…en UP is enabled

Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
…ltiple distrbutor on first run

Signed-off-by: sim <git@sgougeon.fr>
Signed-off-by: sim <git@sgougeon.fr>
@p1gp1g
Copy link
Contributor Author

p1gp1g commented Feb 18, 2026

Oh, and I've seen something strange during the implementation:

userManager.users.blockingGet() returns 2 users even if I'm connected with a single user. I've tested multiple time, from a fresh install and it always happen. The 2 get the same username, but different userId. Are you aware of that? Should I open an issue ? I think the duplication happens during the registration, but I'm not sure at all

@mahibi
Copy link
Collaborator

mahibi commented Feb 18, 2026

Thank you so much @p1gp1g i'm really looking forward to have UnifiedPush implemented 👍 👍 👍
We will take a close look as soon as time allows, it might not be this week though.

@mahibi
Copy link
Collaborator

mahibi commented Feb 18, 2026

Oh, and I've seen something strange during the implementation:

userManager.users.blockingGet() returns 2 users even if I'm connected with a single user. I've tested multiple time, from a fresh install and it always happen. The 2 get the same username, but different userId. Are you aware of that? Should I open an issue ? I think the duplication happens during the registration, but I'm not sure at all

Thanks for reporting! This sounds like #4499 so no need to create a new issue. So yes, we will have to take a closer look how this can happen during registration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews enhancement New feature or request feedback-requested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support notifications for f-droid version

3 participants

Comments