It turns out that the reason free, open source messengers suck on iOS is that #Apple force-closes background applications unless you pay them for the privilege - which is why proprietary applications like WhatsApp, Discord and Facebook Messenger work just fine.
This means small and free actors are banned from participating.
It's the sort of a thing Mozilla used to be in a position to fight against, but they're too much of a company themselves now.
I think this just leaves the EFF.
@polychrome Yup. There's ongoing litigation about it as I understand things. I hope the tiny guys win.
@raantuva I'd love to see more information about this litigation if you happen to remember anything about it.
@polychrome I just know people. Don't have anything public. Ongoing suits are always private. Curious how long before we get public details
Both vendors do this to prevent battery-draining background apps. Given how bad battery drain is for some apps anyway, I'd say that's a reasonable position.
This is why Signal uses Apple and Google push notifications. (None of your data goes to Apple or Google.)
@polychrome That's not correct. The APIs are clearly documented:
You can run a background task on a schedule forever, it just can't be constantly open sucking battery and data cap dry. The correct way to do that is remote notifications from your server, and an easily disconnected API. So no naïve IRC impl, you need to write a bouncer.
@polychrome Right, you need to write a bouncer, deal with notifications which are a pain, so years ago I used Urban Airship to outsource that, I dunno who's good now.
@mdhughes .. isn't WhatsApp based on a spin on XMPP? I know they replaced the plaintext stuff with binary codes, but its still expecting a constant connection. Which as far as I'm aware, they're paying an exception for.
@polychrome They have to run their own bouncer when it's in background, it can't be a constant connection. Nobody's paying Apple for an exception. Facebook used to cheat by running a silent "music" loop and they got busted.
You can test it easy enough with wireshark as a proxy.
It includes swapping between LTE/wifi and buffer playback for when the app is killed. You can also get your XMPP server to talk to push services for your client so you're still getting notifications when you get messages even if the client is closed, which can prompt you to then reopen it and have those messages delivered.
@polychrome I had to deal with this once. IIRC, iOS kills background apps after a minute or two and if the app doesn't use Apple's push service, then there really isn't a way for it to wake up. There used to be exemptions for VoIP apps until 2-ish years ago but Apple, being Apple, mandated everyone to do things The Apple Way™.
@polychrome this single problem is all that stands in the way of an incredibly secure and private communications platform.
@kzimmermann It's not that clear-cut, but basically you can't implement an IRC client in iOS that won't be disconnected when put into the background
@jkb I see. Maybe I'm biased (actually, I'm pretty sure), but seeing so much crap that developers need to put up with Apple pisses me off to some levels.
@kzimmermann Based on the recent K-9 Mail event, Google doesn't seem to be much better. I don't know about Microsoft when it comes to mobile.