Status-react: Feature Request: Mobile Push Notifications

Created on 18 Apr 2020  Â·  6Comments  Â·  Source: status-im/status-react

Feature Issue

The Status iOS application does not appear to send any chat notifications. Apologies if this is already being tracked elsewhere (and please point me in that direction if so). I saw some issues that mentioned push notifications but nothing tracking whether or not they would be (re?)implemented and why.

User Story

As a user, I want to be able to message other users on Status and be notified when other users message me so that I can have a conversation in real time without keeping the app open at all times.

As a privacy-tech "evangelist", so to speak, I want to be able to recommend Status to the communities I participate in and to others as not only a solid mobile wallet/Dapps/Web3 browser, but as a true privacy-focused alternative to instant messengers like Signal and Matrix.

For both these situations, I strongly believe that to be considered an instant messenger solution, users need the option to be aware of incoming messages at all times.

Description

Summary: Essentially what I would like is for push notifications to be implemented, and to be configurable on a per-chat basis.

Notes

Matrix.org has evidently solved decentralized notification providers by providing a "push gateway" that takes notifications from independently operated homeservers and forwards them to the device vendor's provider service. I feel like a similar solution could be implemented for independently operated whisper nodes / mailservers (if I understand how these nodes work correctly).

image
(source)

Obviously this requires a centralized service operated by the Status team, but I think this is a tradeoff users will find acceptable because they of course already rely on the Status app being provided by a centralized service anyways.

Signal has also solved the issue of notification content. Their notification servers send essentially a blank notification that only wakes up the app, and then the app itself generates the final notification with message content (I believe matrix.org operates the same way but don't quote me on this). This way a very minimal amount of metadata is actually sent to Apple/Google. Again I feel this metadata (the time a message was sent and the fact that the Status app is being used by a particular user) being given to Apple/Google is a very acceptable tradeoff for many users, especially because they are downloading the app from their respective App Stores, revealing their app usage already.

I think you could adopt similar functionality to these services to provide a push notification service that is functional and still privacy respecting. And of course it could be toggled by users who think even that amount of metadata being revealed is too much.

feature

Most helpful comment

There's definitely not a clear equivalent for iOS planned at the moment. We've talked about decentralized notifications by sidecar'ing those onto the desktop client (when that's ready.) The potential equivalent on iOS would be background updates, but those aren't consistent or frequent enough that I'd call them push notifications.

Let me look at the other points you've made and get back to you.

All 6 comments

@JonahAragon thanks for the detailed issue, just to give some historical context and better make a decison:

The method we used before for push notifications was something similar to this (although without a server, users were exchanging tokens for notifications through contact requests, which was questionable in terms of security in my opinion).

I believe the reason why we decided to stop using this system is that it invalidated one of the protection that the current setup offers, namely that it's not easy to correlate sender and receiver of a message (i.e it's difficult by just observing the messages on the wire that A is talking to B). This metadata protection is something that Signal does not offer (not sure about Matrix but probably is the same).

I wasn't involved in the decision myself, so other devs might be able to give better context, cc @yenda

It might be worth looking into how Signal’s “Sealed Sender” feature works, it’s my understanding that they’ve solved that metadata issue.

But regardless, I think is still worth considering as an opt-in/out feature in the app where people could make the convenience/privacy tradeoff themselves. I definitely can’t speak for all your users, but I know that for myself and the people I chat with who are looking for basically “Signal but without phone numbers”, Status is basically exactly what we need if only we were able to actually know when we received a message. Until then I’ll keep using Status for dapps functionality, but the chat is largely useless to me unfortunately.

It might be worth looking into how Signal’s “Sealed Sender” feature works, it’s my understanding that they’ve solved that metadata issue.

Thanks for the suggestion, they partially solve the issue, Sealed Sender provides metadata protection for the sender, but not the receiver (while waku and whisper before protected both), also it is probably trivial for them to correlate IP addresses.

But regardless, I think is still worth considering as an opt-in/out feature in the app where people could make the convenience/privacy tradeoff themselves.

I think you are making a very good point, and it's an option that we should definitely consider.
It's always difficult to strike a balance between privacy and usability, and one size fits all is probably not going to cut it if you want to have a large user base.

I believe push notifications will be introduced on android with 1.3 (to be released soon), using a service, but as I understand there's not a clear equivalent for IOS.

It's definitely worth though pushing the conversation further, maybe @andremedeiros or @rachelhamlin have more info about the plans for IOS.

Thanks for the thoughtful contribution!

There's definitely not a clear equivalent for iOS planned at the moment. We've talked about decentralized notifications by sidecar'ing those onto the desktop client (when that's ready.) The potential equivalent on iOS would be background updates, but those aren't consistent or frequent enough that I'd call them push notifications.

Let me look at the other points you've made and get back to you.

Cross posting proposed options and discussion by @flexsurfer: https://discuss.status.im/t/decentralized-push-notifications-for-ios/1718

Closing as this issue is addressed by: https://github.com/status-im/status-react/pull/10935

Was this page helpful?
0 / 5 - 0 ratings

Related issues

churik picture churik  Â·  3Comments

rachelhamlin picture rachelhamlin  Â·  3Comments

jarradh picture jarradh  Â·  4Comments

errorists picture errorists  Â·  3Comments

denis-sharypin picture denis-sharypin  Â·  4Comments