3

I'm trying to get around a strange problem concerning an iOS app my company produces. We use a branding process to brand a single executable, assigning it new resources and a new bundle id, but keeping the same core executable across brands.

The problem is when a phone has multiple different brands installed, disabling one app for cellular connectivity is inadvertently disabling all of them, and I can't figure out why.

To reiterate, each app naturally has its own bundle id, so why would disabling cellular data for one app cause it to break for other brands?

  • 1
    What does your Cellular Data screen look like? Are the other apps still switched on? – 0942v8653 Jul 8 '14 at 21:57
  • @0942v8653 Yes, it just takes one being switched off to affect them all, even though they all appear enabled on the Cellular screen. – devios1 Jul 9 '14 at 1:57
  • 1
    @chaiguy I'll look into this for you. I'll test out some different values in the CellularUsage.db database with apps from the same company and other things. Oh, and do you have any specific examples I could test with? – Andrew Larsson Jul 10 '14 at 22:57
  • @AndrewLarsson That would be awesome, I really appreciate it. I will see if I can whip up some demo apps that exhibit the problem! – devios1 Jul 11 '14 at 4:53
  • Future ref - this question is probably better asked at StackOverflow, as this site is for user questions not developer questions. – Tim Malone May 9 '16 at 3:40
2

I did some further investigation and experimentation, and from what I can tell, iOS is identifying the disabled app based on the app binary in some fashion. That is, the actual embedded executable file inside the app bundle, instead of the bundle id as one would intuitively expect.

If I create two different builds, and brand them into several brands each, then disabling one of the branded apps disables cellular connectivity for all brands in that group (i.e. that share the same underlying binary), but do not affect those brands built with a different binary. Furthermore, renaming the embedded binary file has no effect, so it's clearly basing it on the contents of the executable (perhaps a checksum or internal identifier).

As far as I can tell this is just a bug in the implementation of this feature on iOS, and I can't think of any way around this that doesn't involve completely changing how we are branding our apps. I've submitted a bug report to Apple.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .