Now Apple does not offer anyway that I have heard of for people to offer an alternative app store.
This CAN be overcome by a special app that keeps connection with an alternative push notification server, but it would still be prone to offloading and would have to run a persistent notification.
The proper solution would be unlocking notification services on Android devices and allowing to chose alternative push notifications providers. This can also be applied to iOS.
I have built several push services for my previous projects it always sooo hard to implement right. iOS for example, uses 25+ different parameters to optimize push delivery depending on your app usage, on how you are using your phone and so on.
Good luck to build this as "third party" and keep everything private.
There are really almost no need to run app in the background or at least constantly send data without a reason (mostly just tracking).
UPD: When deciding how to build something i have one small trick: first ask question about who can make better decision about something?
For example? Who is more capable to make decision about battery usage, about tweaking core performance, etc? It is obviously kernel or silicone itself. App will never have required information to build perfect performant app for every device. This just means that you have to build a kernel by yourself and even more: common kernel for every phone.
Aren't battery stats not enough for you? If your app uses too much battery, you can stop using it. Or you prefer some other people to make this decision for you?
The only 'special treatment' that happens is on Google/Apple servers which determine the priority of some of notifications.
How do I know? We're very involved with the XMPP protocol. The irony is that it is insanely hard to maintain an XMPP connection to a client on both Android / iOS, despite devices under both these OSs being an always connected XMPP clients.
Moxie has cited this previously with no proof, despite protocols like xmpp performing similarly on mobile networks.
The issue is that a long lived TCP connection consumes some valuable RAM and a port number on a valuable IP address. It costs carriers something for push notifications to work, so, they tend to aggressively close long lived TCP connections that aren't going to recognised push datacenters.
For that to work you need business relationships with the carriers of course, stable IP addresses, and enough users of your push service for it to be worthwhile.
IPv6 would fix it by eliminating IP scarcity and CGNAT, but most mobile networks aren't provisioning handsets with IPv6 addresses.
https://web.archive.org/web/20170708204409/www2015.wwwconfer...
Whether FCM uses these technologies, I don't know. I lack the hardware to easily inspect the mobile radio traffic on the necessary level (the best would be a DIY stingray based on one or two OsmocomBB-capable GSM phones, maybe combined with a Faraday cage to place one of them into, together with the smartphone.
They may not perform anticompetitive behaviour like bundling (as they have already been fined for in the EU over Android and Play Services).
I don't see the anti-competitive part there. There are good reasons around consolidating resident daemons and only using a single TCP connection with a special keep-alive configuration.
And from experience, it's perfectly possible to not use FCM, at the cost of a persistent notification that alerts the user about this, so they can get rid of abusive apps.
Maybe not exactly anti-competitive (but maybe): It requires you to have hundreds of megabytes of Google blobs with root permissions on your device, which some people don't like.
If course this pales in contrast to Apples actions.
My understanding is that this is not an effect of side loading, but an app not using Google Cloud Messaging, which is not available when play services are not installed.
Anyone can distribute their Andrioid app using their desired way. Even via web site. Exmple: https://signal.org/android/apk/
Sending push messages to Android phone using Firebase Cloud Messaging(FCM, formerly GCM) requires "Google Play Services" installed on that Android device. Google Play Services is not depends on Google Play Store and is not requires that applications using Play Services should installed by Play Store.
This just isn't an issue for 99.9% of users.
My take is this: computers (especially phones) are like cars: some people love to tinker with them and take on a project car that they tweak to their liking, but most people need a reliable and inexpensive car that can get them to and from the grocery store.
Now some people never open the hood of their car. And for those who do, a lot of car manufacturers have just the answer -- they have a second hood under the first hood (it's plastic and only has holes for maybe the wiper fluid).
but apple is bolting the hood shut. and welding it.
(it's such a shame, really)
Until years later we have fewer people interested in learning how computers work, because the only devices they ever owned were locked down walled gardens.
Maybe these people don't even know what they're missing, because they've never even seen it?
Those of us who understand the implications now would benefit ourselves and many others by helping more people find that spark, that need, want to tinker.
I can do the same thing on linux yet my computer's not a cesspool of malware.
>Most consumers are dumb and it should not be possible to trick them into installing arbitrary binaries.
No, most users are uneducated and don't care and expect computers to be safe the way other things are. This doesn't make them dumb, this doesn't mean they need to be treated like children. This means the information needs to be communicated to them more effectively'
Most users are adults capable of dealing with the myriad of dangerous things life brings. This is because most things come with adequate instructions and warnings.
Operating systems follow two extremes, they give no fucks and let you do what you want with minimal instruction or they lock you up and tell you what to do. Both of these are inadequate for average people and don't reflect the way most things worked, up until relatively recently when businesses decided people needed to be treated like children.
Computers are heavily integrated with daily life. Treating users like a bunch of kids that need safety padding is insulting and ridiculous. If there's a failing at the general public in understanding these concepts, it's a failing both in education and honestly, a collective elitism that places people who know technology above regular people, reflected both among regular people in the tech community and large tech companies that results in either them being taken advantage of or manipulated, or again being treated as invalids incable of looking after themselves.
While I'd like to believe that, injury and death statistics from things like road accidents, smoking, alcohol, etc.; the number of machines owned in botnets; and the overall response to COVID-19 is not convincing evidence of this.
You can look at all the dumb shit humanity does and scorn it all you want then stop and think about the fact that, you me and everyone else is here with all the things around us. This shit didn't come from nowhere. Humanity, for all it's faults and weaknesses did this and you exist because of this.
The average person, as much as that implies, is capable of some pretty impressive things and to dismiss them is pretty arrogant and I bet if you took a look at your life you've done some pretty dumb shit...and if not I salute you, you are truly above all others.
They are also capable of some pretty stupid and self-destructive things, too, even in the face of "adequate instructions and warnings".
Android actually does it decently well. Apps are pretty well sandboxed with quite clear interfaces and side loading can be enabled in the settings (even as a side loading fan I think it's a bit easy, considering the consequences).
"most popular" in the sense of "most widely installed and tolerated", perhaps, but definitely not "most popular because people actively chose it where there are other viable options" because, for many people, there is no viable alternative (e.g. gamers).
There's an increasing feeling that Linux is getting there for gamers too. There are already mainstream narratives [0] that Linux may be better for gaming than Windows!
[0] E.g. https://youtu.be/6T_-HMkgxt0
True, I definitely see a lot more of the things offered by people like itch.io or Humble Bundle having a Linux option.
An average consumer might get most of their apps from the vetted store while still able to install transmission or VLC directly.
The problem with windows was that there where no properly implemented permission systems and there were a ton of bugs that malware could exploit, the situation seems to have improved significantly from Windows 98.
We are talking on the web right now. Your browser executes arbitrary code. Should we ask someone to approve every single website before it can be accessed?
Easier to coordinate a deployment for, and affects all users, not just installing one. It would also allow you to control the messaging users see when they open your app and it only loads the walk out day screen.
Punishing the users of an app for the behaviour of the store, while attention grabbing and potentially impactful, seems a bit like chucking the baby out with the bathwater.
You didn’t see this coming? Good one, now pull the other one.