So, today I was looking through one of my favorite sites for Apple news and I came across an article entitled “AT&T Sued Over Alleged Overbilling for iOS Device Data Usage“. Apparently, there is a class action lawsuit brewing alleging that AT&T overbills iPhone and iPad users for
data usage. Unfortunately, I think there are a couple of flaws in this lawsuit.
The first is that the plaintiffs are stating that AT&T systematically overbills clients for data usage even when the device is not using any data. Of course, the yardstick they are using to measure that the phone is “not using data” is the claim that they are turning off push notifications, turning off applications, and allowing the phone to sit unused. The main problem here is that there is no evidence cited that will prove that the phone or pad isn’t actually using data. What do I mean? Let me explain.
First, Push Notifications. The way Apple implements push notifications, in some instances, the device STILL RECEIVES the notification – it just ignores it if you have disabled it. Some apps (like Facebook) have their own push notification control panel, while others (and most of them) use the standard Apple provided push notification management system where your decision to opt-out of notifications is made by visiting the Notification Settings control panel on the device. In this control panel, you can disable all notifications, or you can go in on an app-by-app basis and disable alerts, badges, and sounds. Disabling all three of these supposedly disables the notification.
Here’s the kicker – from what I can tell – this doesn’t DISABLE push notifications – it simply tells your device when they come in to ignore them. I’ve implemented a push notification server for my company, GeekUtils. When a developer like myself implements a push notification server a couple of things happen.
- User installs app that has notifications
- App asks user whether they would like to receive notifications
- If the user says yes, the device provides a unique push identifier that the developer can then use to send push notifications to that specific device.
- If the user says no, the device provides a unique push identifier that the developer can then use to send push notifications to that specific device.
- User receives (or doesn’t receive) push notifications depending on their initial setting
- At some point in time, the user decides to change their mind and if they were RECEIVING notifications, they turn it off. If they were not, they turn them on. At this point, the user is configuring their opt-in or opt-out status in a device control panel OUTSIDE of the application that will push. This changes nothing from the developer’s perspective, and the developer never receives notification of this settings change.
As you can see – installing an app with PUSH will *always* register the device with the app developer’s push server. Until the user uninstalls this app, or until they go off-network for quite some time, the push notification server will assume the device is active. It is only after many days of no response (no network at all) or removing the app that Apple’s servers will notify the developer’s servers that the Push identifier for that device is invalid. So, when the developer pushes something to that device ID for that app, their server will connect to the Apple Push notification servers and submit the push notification payload. The Apple servers will process the payload and will then send the push to the device specified by the unique device identifier. It is only at the final endpoint where the push notification will be displayed or ignored depending on the user’s setting on the device.
In other words, if you have 20 apps installed on your phone that all support push notifications, and the only way to configure those notifications is by Apple’s built-in push notification settings control panel, even if you have them all disabled for push – your phone or pad is still receiving the push notification payload – it’s just not showing it to you. In other words, yes, you are burning data even though it’s not benefitting you. Like I mentioned, some apps (like facebook) allow you to configure push notifications INSIDE the app – this is different. In most of these cases, the developer of the app is recording that you don’t want to receive the notification, and they do NOT send the notification to Apple’s servers unless you go back into the app and enable push. Most apps, however, do not work this way.
At first this may seem nonsensical, but in reality, it makes perfect sense. Especially when you use devices like the iPod Touch which don’t have an always on internet connection, this gives you the ability to change these settings in the device control panel at will, whether on-line or off-line, and your wishes will be granted. it provides a happy medium where your users have access to use a great service, but the developers don’t have tons of code to implement opt-in/opt-out settings, need to worry about checking for changes since the last launch before sending a push, or the need to create complicated bi-directional communication paths between Apple, the developer, and the devices which are constantly banging on the network and the device.
As described in the Apple Push Notification Programming Guide
, push notifications have a maximum payload of 256 bytes which is very small – so with an app that doesn’t blast you with notifications, this shouldn’t be an issue. Now, because the payload is what the developer is sending you – let’s assume that there is a 10% overhead of other binary data
that “packages” the push payload. So given this – we will assume a notification size of 282 bytes.
Now, the lawsuit appears to cite a sample where a phone accumulated 2,292kb of data usage over a 10 day period “without being touched”. Assuming this is true, and using the law of averages – that’s 229.2kb of data per day. 229.2kb of data comes out to around 29,338 bytes. Assuming the max push payload size of 282 bytes, this equates to around 104 push notifications per day. Now – this sounds rediculous – but if you have a bunch of apps like Mashable, ESPN, Twitter, CNN, and others on your phone – this isn’t out of the ordinary.
Combine this with the fact that this is data being received by pushes that were thought to be “disabled” – it becomes easy to imagine how one could receive this many notifications. Let’s say for example you have 26 apps on your phone, you have push enabled on four or five of them – but on the rest, push is disabled. All that would have to happen is for each app to send you four notifications per day and you’ve hit your 104 target. Given that it’s even more common nowdays for people to have upwards of 100 apps on their phone, it’s easy to see how significant amounts of data could be consumed even if you’re not “receiving” (read: viewing) the push notifications.
Now, This is based upon my understanding of how push works – and what I have witnessed through my own apps. All I know is that I send pushes to all devices whether push is enabled or not. My assumption is that Apple does not do any further filtering on these notifications – your device does. Given the technical challenges of supporting a notification system that must deliver the best service possible through online/offline scenarios, this is also perfectly logical and IMHO, the system is very well designed.
The other flaw in this suit is that it completely discredits the fact that these are basically computers. If you are on a limited data plan on a cellular card for a normal laptop computer, and you leave it sit for 10 days, connected, in your laptop but never “use” the laptop – I’m sure you’d be surprised at the amount of data the computer consumes just sitting idle – even if you are not using it. Computers are constantly communicating on a network if it’s available, regardless of whether you are actively using the connection – it’s a side effect of being connected and desiring that “always on” connection expected today. Renewing DHCP leases, communicating with DHCP servers, responding to network ACKs or pings – all of this stuff consumes data with no apparent benefit to you – but it’s required…. deal with it.
If the people filing this suit had half a brain, they would have turned WiFi on and used a network analysis tool to figure out how much data the device consumes when sitting idle over WiFi. The device doesn’t discriminate – it will keep a network connection active whether it’s WiFi or Cellular – so analyzing the WiFi vs. Celluar traffic should yield consistent results given the same scenarios. This would be easy enough to do by dropping a halfway decent managed switch in front of a wireless access point, and then observing the network traffic to/from the iPhone/iPad using any common network analyzer.
I’m willing to bet given this scenario, they also would have seen 2,292kb of network usage over the same 10 day period given, and they could have actually SEEN the contents of the traffic. I’m willing to bet that it was composed of network maintenance/queries/responses and push notifications they thought were disabled. In the end, however, I doubt very seriously it’s AT&T billing them “for the hell of it”. I’d like to see them perform the same test by taking a newly activated iPhone, with no third party apps installed, and let it sit over 10 days. I’m betting it still uses data, just not as much.
Just my .02.