It turns out that the reason free, open source messengers suck on iOS is that 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

@polychrome I have my popcorn ready for the bloodbath 😂

@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.

@polychrome @mdhughes I don't know if there's a more recent review of this, but here's all the things that make mobile work for XMPP

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 Interesting... I wonder what that means for my project then though...

@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™. :blobcatumm:

@polychrome this single problem is all that stands in the way of an incredibly secure and private communications platform.

@polychrome @dubst3pp4 TBH, Matrix also works perfectly fine despite the limitations from Apple. The only thing that doesn’t work on iOS is XMPP clients - all three have major issues with push 🙁

@jkb holy crap, for real? This is like the DR-DOS and AARD code FUD all over again.

@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.

Sign in to participate in the conversation

cybrespace: the social hub of the information superhighway jack in to the mastodon fediverse today and surf the dataflow through our cybrepunk, slightly glitchy web portal support us on patreon or liberapay!