4 ms·
Is it possible for every app developer to stop using FCM? Yes, in China. The result is a chaotic market. App devs will have to use multiple push machinism for
by yegle 8y ago
Is it possible for every app developer to stop using FCM? Yes, in China.
The result is a chaotic market. App devs will have to use multiple push machinism for different device: on Huawei phones, Huawei's own push service is the most reliable; on other phones, you might want use SDKs from Tencent/Baidu/Alibaba so their app (Wechat/Baidu search/Taobao/Alipay) can "wake up" your app to receive push. Battery life become miserable, push become unreliable. It's to a point where the government start "regulating" the market (the Unified Push Alliance, http://www.chinaupa.com http://www.chinaupa.com, is lead by CAICT, a think tank of Gov of China).
- ktosobcy 8y agoBut do we really need "push providers"? The problem is (IMHO) that app developers don't know how to use the connection efficiently causing the radio to wake up constantly (IDLE socket connection has very low battery impact). Instead of pushing every darn detail queue less important ones and send them out when something more important arrives; your client app can signal the server, that app is in the background (or phone is going to sleep) to send less frequent updates. But - companies will abuse everything they can to notify users about absolutely everything. Currently I'm running phone without google play services and it works just fine (with exception of Viber, which can't deliver messages correctly without push services, but it's not that important for me).
- richardwhiuk 8y agoAs soon as you are maintaining multiple connections, battery life gets worse.
- ucaetano 8y agoIf you don't have a push provider mediating the many apps trying to get notifications, you end up in a tragedy of the commons scenario, where every single app will try to implement its own push service and will prioritize its own push service, quickly resulting in a race to the bottom where the device is constantly connecting to a different push service, draining battery and exhausting your data connection. It isn't very different from preemptive/cooperative multitasking.
- iad 8y agoWhy can't the device just chose a single wake schedule and communicate that to each push provider? Hopefully UDP can be used so there's no need for any keepalives or handshakes during the wake periods? Are clocks too unreliable or is there too much NAT because everybody's too lazy to implement IPv6 still?
- izacus 8y agoThis actually happens on Android (read about Doze mode), but the issue with your approach is that you don't get realtime delivery - only periodic sync. Which is actually less efficient, because the device must wake up on interval, activate the radio and poll for changes. FCM (and Apple push) run a single keep-alive TCP connection and incoming packets will cause radio and application process wakeup only when necessary. This change significantly improved Android battery life (remember that HN Apple lovers really loved to bash on Android battery life before this FCM push happened). The fact of the matter is that a lot of developers didn't care one bit about battery life and abused Android background services when there was no need to do so (e.g. schedule periodic wakeups to check for a preset alarm needed once 24 hours) and if we learned anything by this experiment is that you simply can't trust developers to respect users anymore.
- nicoburns 8y agoDoes the 1 tcp connwction notnrequire the radio to wakeup to receive pushes?
- izacus 8y agoIt does, but not really periodically - the radio is just listening and not transmitting until a packet comes. Then it wakes up the application processor to handle it.
- int_19h 8y agoI guess the question is, if a single listening TCP connection is not a problem because everything can sleep until a packet arrives, what's the problem with multiple apps each opening such a connection?
- floatingatoll 8y agoWe need the core operating system to provide a push provider that we trust. Do we trust Google to act as a push provider?