I've considered switching to an iOS device, but stuff like this keeps me away, I'm very glad I can keep direct SIP, SSH, IMAP and XMPP connections open at all hours of the day.
I've considered switching to an iOS device, but stuff like this keeps me away, I'm very glad I can keep direct SIP, SSH, IMAP and XMPP connections open at all hours of the day.
"Without this, there may be a delay in sending and receiving messages."
https://support.signal.org/hc/en-us/articles/360007062172-Si...
Background processing simply allows it to have the message ready for you by the time you open the app.
Signal uses the exact same PushKit VoIP API that Facebook does, by the way - check PushRegistrationManager.swift in their source. I'm not sure if they use it for text chat as well as voice, but I assume so since there's no references to the newer API they could use in their code and they still support iOS 9 which doesn't have it (as do Facebook Messenger and WhatsApp). Edit: I think it's safe to say that Signal does this, given that Moxie Marlinspike isn't aware of any other way to do it: https://twitter.com/moxie/status/1158852855291269120
(Well, they don't intentionally let apps run all the time in the background. They're quite lax about how long apps can run for in the the background after being woken up in order to support voice calls, but that's not the feature messaging apps need from them.)
The intended way VoIP application should work is using PushKit and CallKit to show a native call screen after receiving a special VoIP push notification message. Only when the user accepts the actual application will open.
"Background App Refresh" is used for silent push notifications, which should be used to download content when the application is not running. It could be used to download images in messages ahead of time, though could be abused just as well. "Background App Refresh" is not a reliable way to deliver notifications to an application since they're dropped pretty easily.
If you would use the custom notification handler you are required to show a notification, which is fine for a new message but doesn't make sense for read confirmations, "is writing" updates or all other types of information that should not pop up to the user immediately.
Of course you can work around it by using a WebSocket while the app is open and only use push notifications for new messages but obviously that's going to be less tight than the current situation.
But then again it seems that apple would want to ensure that there’s still a good way to do end-to-end encryption, so I would guess there would be a workaround.
I doubt they would ban end to end crypto, but you are right, it is more of a locked down system.
Edit: keep reading. People explain this nicely below.
How exactly do you deliver notifications in Android? Can background apps simply listen on an open websocket or something?? What exactly is your technique on android