Divisive Devices

One thing that bit me a while back, and should be publicised I think, is the current limitation around device IDs in the iPhone Program Portal.

If you are writing iPhone software, you get to specify the hardware ID of a hundred iPhone or iPod Touch devices that your software can be installed on for the purposes of testing. Set up correctly, you can have a group of beta testers which you can send pre-release builds of your software to. They don’t need to go through the App Store, the software can be put directly onto their device via iTunes. This is known in the program portal as “ad-hoc” distribution.

This is invaluable for testing out new versions before you submit them to the store for everybody else, and wasn’t something available right at the start of iPhone development. Before iTunes Promo codes came along, it was also used by people to give copies of their software to the press.

All you need is to get the UUID of the device, enter it into the Devices tab of the program portal, and it’s then available to be assigned to the “provisioning profiles” which are the magical files which say which devices a particular ad-hoc application can be installed on.

The user interface suggests that you can have 100 testing devices in use at any time, and there are controls at the side to add, remove and modify the existing devices.

So, for example, when the iPhone 3G came out, a lot of my testers got new devices, and I went through and updated their entries to list the new UUIDs.

Then, at some point a few months back, I hit a problem trying to update a device from somebody who lost their phone and got a new one – all the controls to edit the devices had vanished:

I didn’t have 100 devices in use, and anyway, I figured that if I ever did hit 100, I could just remove some folk to make room for new one. It looked like some kind of bug to me. So I sent a detailed email explaining everything to Apple, and a month later got the following response:

Please know that each Standard iPhone Developer Program enrollment has a limit of 100 test devices please be aware that removing a device will not replenish the current amount available .

I hope this information was helpful.

Uh…. no, not really.

Reading between the lines, and discussions on the forums, it sounds like every time I deleted or modified an entry, I was getting one closer to the magic figure of 100 device IDs you have entered since the beginning of time. When you hit the limit, regardless of how many total device IDs you have listed in the portal, your ability to further edit the list is removed completely.

Some people have been told that after removing a device, the slot is eventually freed up one year later. Given than the whole history of iPhone development is itself only about a year old, this isn’t exactly helpful. I don’t have any direct evidence that this is true anyway.

I can’t currently add any new testers or change their device entries if they get new ones. And I can only imagine what is going to happen when the new iPhones come along, presumably next month, and lots of people get replacements. If I bought a new iPhone for myself, I couldn’t even add it to my own list of development devices currently.

Now, I understand why Apple has put some limits on this – people were using the ad-hoc feature to bypass Apple and sell software directly to their customers outwith the App Store, very much against the rules. But now, anybody who wanted to do that and break all the agreements in place with Apple, would probably do so with the much easier promo codes. So, this restriction is just hurting real developers who are working within the system.

The last thing I heard about five weeks ago was:

We are currently reviewing your inquiry and will get back to you very soon.

And, so far, nothing. This problem is sonar ID 68922738 for anybody at Apple reading this who cares. Bottom line, developers be careful with your device IDs, you might not have as many left as you think…

Oh, and since this is about to push my PCalc promo story of earlier today off the front page… PCALC FOR iPHONE HALF PRICE SALE, GET IT HERE! 🙂

Author: James Thomson

Indie iOS / Mac developer, maker of PCalc and DragThing. Occasional writer, conference speaker, and podcast pundit.

17 thoughts on “Divisive Devices”

  1. Thanks so much for taking the time to clearly state this. I would have fallen into the same trap – the wording of the program misled me and only for lack of your skills (i.e. you have a lot more testers than I and a far, far better app than I’ll get out anytime soon) did you reach the 100 limit before I.

    I hope there is soon a little relief to protect active developers yet still prevent an end run of the store. It sure seems like you of all people have earned a re-do even if the policy stands and is properly worded to prevent people blindly driving off a cliff with nary a warning.

  2. I think that perhaps this happens because all you’d have to do is to add someone, they install the app, you remove them, add someone else, they install, rinse-repeat. The 100 limit is okay with me as some release after a year like you mentioned.

    You could always open another dev account too.

    1. Do you know for certain they release after a year? Even if it was set to something shorter like a month, it would stop most abuse. And I don’t feel particularly inclined as to pay Apple another $99 a year to work round their broken systems!

  3. Holy crud! Thank you so much for writing this post! I’ve added a bunch of iPhones thinking I could easily remove them at a later date to make more room… Glad I haven’t yet actually deleted one!

    @eric: This limit does nothing to stop anyone from doing what you describe since it seems you can simply change existing iPhones instead of deleting them – if you *know* that you shouldn’t delete them!

  4. I noticed similar behavior a few months back–fortunately I still had 35 slots left when I noticed it. One thing I was curious about though that I haven’t had a change to play with. You notice that for the device’s the UI lists the provisioning profile that each device is assigned to. I wonder if this is actually just a referential integrity constraint that we are running into. If we are able to remove a provisioning profile that the device refers to (and I’m not sure if you are), can we then remove the device and regain that particular slot in our 100 device list?


    1. I don’t think that’s the case, because I had already removed and recreated the profiles at one point fairly recently when I was having problems with signing. And, I would have thought that the Apple person would have mentioned that at the time if it was a solution. The fact that all the controls just vanish is a little strange though, and led me to think it was a bug somewhere. But it seems that’s normal…

Comments are closed.