0

Dear StackOverflow Community,

I have an enterprise app that has to track the UDIDs of all of our ipad devices within our organization/network. Right now, we have a total of 9 ipad devices being used that have wifi connection. The purpose for tracking the UDID is to retrieve user data from each of our individual ipads for analytical purposes.

As of now, we have to manually input each UDID in our provision prior to building an IPA file in XCode, but we are finding it to be cumbersome and wonder if there is a solution to input new UDIDs for future ipad devices without having to create a new IPA each time.

For example, when our network grows beyond our 9 ipad devices, and we have to add 5 more ipads, how can we input the new UDIDs dynamically?

Is there a way to dynamically or programmatically input the UDID via http calls (or some other method) so that we don't have to rebuild a new one every time?

Thanks and any help will be appreciated.

keuminotti
  • 1,443
  • 2
  • 12
  • 16
  • Solution: Jailbreak each and install via installous. There is no other way. – Richard J. Ross III Jul 09 '12 at 17:32
  • 1
    ...no, that's not the case. You can use the enterprise distribution tools. For very large (1,000 devices+) companies it would be madness to rebuild the binary every time you wanted to add a device. – lxt Jul 09 '12 at 19:25
  • @lxt How would that be done in practice? Does the binary not need to be signed with a provisioning profile of all devices? How is the app enabled to run on a new device? I can find no info on this. – geon Jul 10 '12 at 10:29
  • @RichardJ.RossIII Jailbreaking is not really an option in a corporate environment. The legality of it is unclear at best. When you have money involved, you can't take a risk like that. – geon Jul 10 '12 at 10:31
  • Hi geon - you create an Enterprise Distribution Profile which you distribute *alongside* your application. The enterprise deployment guide covers this in a fair amount of detail: http://manuals.info.apple.com/en_US/Enterprise_Deployment_Guide.pdf – lxt Jul 10 '12 at 10:43

3 Answers3

3

Regarding your second point - "Do I really have to add each UDID to the provisioning profile and re-build the IPA?" - no, fortunately you do not.

If you're finding it hard enough with nine devices imagine how companies with many hundreds would feel if they had to rebuild their apps every time a new device came along!

However, you need to use Apple's Enterprise Deployment process, rather than the standard deployment process you're probably used to. To do this you first need an enterprise development account, which is different to the $99 developer account most people would get (for starters, it costs more, and you also need to provide some additional legal documentation).

You can find more information about it here: https://developer.apple.com/programs/ios/enterprise/

lxt
  • 31,146
  • 5
  • 78
  • 83
  • Thanks @lxt for the info. I do have an enterprise account. I have read through the distribution document from the resource (http://manuals.info.apple.com/en_US/Enterprise_Deployment_Guide.pdf) and it doesn't seem to reference any method to add new UDID profile for new devies without having to rebuild the IPA while assigning a new UDID to the provision and reinstall the IPA for each new ipad that I am adding to my network. Is there a method in which I can add a new UDID profile/s so that I don't have to go through process again like you described? Since it seems so obvious to you. – keuminotti Jul 11 '12 at 00:48
  • You don't add the UDID's - instead, you install a distribution profile (which is basically a certificate) onto the devices, and that profile allows your app to be downloaded. So there are no UDIDs associated with the device. This previous SO question has some more info: http://stackoverflow.com/questions/3251291/does-an-iphone-enterprise-provisioning-profile-need-to-specify-phone-uuids-like – lxt Jul 11 '12 at 08:51
1

It seems you have two questions:

  • Can I access the UDID from my app?
  • Do I really have to add each UDID to the provisioning profile?

To access the UDID from your app, (for analytics or whatever) just do

NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];

This method is depreciated from iOS 5, but it should still work. The recommended solution is to generate a unique ID yourself, and use that instead. It is not clear from your problem description if you actually need the UDID, or just any ID.

I don' know if it is possible to deploy an app without a provisioning profile with each UDID in it, but I doubt it. There are some tools that can help, like UDID Sender. You can also copy-paste the UDID from iTunes.

geon
  • 8,128
  • 3
  • 34
  • 41
0

I think at least part of the problem can be solved with Testflight - it's free and allows you to register devices on the fly. Once a user adds a new device you receive an email with the UDID of the device. You still have to manually add the UDID on iTunes provisioning portal and re-generate the provisioning profile.

Good luck!

tagyro
  • 1,638
  • 2
  • 21
  • 36