I always thought if background activity is disabled, the app does really nothing. but even apps which are since months closed like airbnb are talkative and communicate to their home server. I've expected another behavior and it seems to be wrong communicated to the user.
Yeah, the problem is "Background Refresh" is a specific feature, versus other ways apps can get time while in the background. VOIP, Geofencing, Audio playback, and Push Notifications aren't really considered background refreshes. It doesn't make sense that VoIP or music playback breaks just because you turned off Background Refresh, does it? And many notifications don't even need the app to run, but some notifications can give the app CPU time (although I think these
are counted as part of Background Refresh?). Location data is a little more awkward. It has its own toggle.
Some apps abuse this to get time on the CPU. Oh you moved a bit? Lemme just send some data back home too. It's one reason Apple is trying to crack down on what resources an app has access to if it is running in the background because of VOIP. But I think the background location data still leaves a bit of a hole. Part of the issue there is that if you have a hiking app tracking your hike, it really should have access to
some resources in the background as it's logging the data. But that same thing can be used to dial home. And too many apps use it as a way to wake up in the background, IMO. I tend to shut off background location access unless there's a real need for it because of that.
Background refresh is a more general purpose way to get background time. It's more like "Oh, I had to wake up for this push notification... you, get some CPU time to go fetch your e-mails or something." It's also supposed to avoid giving CPU time to apps that you don't use very often, but instead give it to apps you use frequently like a 3rd party e-mail client, or an RSS reader.
I'm curious. Are you using a firewall to detect the apps phoning home?