I need to know what methods people are using to distribute (internally) demo of iPad application wirelessly without having to manage UDID?
I do not need a solution like testflight or betabuilder, all these requires me to manage UDID in the apple provisioning profile portal.
I am asking this question because I am seeing another studio doing a much smarter way right now and I wish to know how they did it - With a link they gave to us, we can install their demo application from a simple HTML over the air, and a provisioning profile magically appears in my iPad. All this happened without me telling them the UDID of my iPad, and therefore definitely without them to recompile the project.
How did they do it?
"No" is the short answer. If you have a Corporate iOS Developer account you can package up apps to be installed directly onto any iOS device (restricted by license) of any employee of your company.
Apple offer two solutions for this: Apple Developer Enterprise Program, This allows you to distribute your app as a URL via your internal site or web server. Volume Purchase Program for enterprises, This allows you to distribute apps via a URL to managed devices within your organisation.
You can distribute an ad hoc build by manually sharing the . ipa file with registered users. They can install it by connecting a registered device to a Mac and using Finder, Xcode or Apple Configurator 2. You can also distribute an IPA wirelessly by hosting it yourself on an HTTPS-enabled web server.
An . ipa (iOS App Store Package) file is an iOS application archive file which stores an iOS app. Each . ipa file includes a binary and can only be installed on an iOS or ARM-based MacOS device.
I've just been through the same thing. I think the big different is the Enterprise Distribution Profile ($299 per year) - if you have one of these, you don't need to have Device UDIDs in the list. If you have a normal $99 per year deal, you have to. Simple as that.
Good news is that Apple have recently dropped the "500 employee" restriction so any company can get one of these: http://blog.apperian.com/2010/10/apple-opens-ios-developer-enterprise.html
You just have to get a free DUNS Number from Dun and Bradstreet, which take 30 days. We've applied for ours and will see how it all pans out.
I've been distributing my apps wirelessly for several months now with no problems. Granted, I am distributing under the Enterprise license, which costs $299 a year and is intended for internal business use. This may work with a normal developer license, but you'd have to do some testing to make sure. I imagine the process is the same if it does work. I'm using XCode 4, so this may be slightly different if you're using a different version. Basically, you have to add an Entitlements.plist file to your resources:
New->File->Code Signing->Entitlements
and before you distribute, you have to change:
"Can be debugged" to NO
Make sure your project is set up with the correct Code signing profiles. Now go to:
Product->archive
then with your newly built entry, click on: Share
Select "iOS App Store Package (.ipa)"
and choose the proper distribution profile you want to use. Click next, then choose a location to save the .ipa file to. Before you click Save, you need to check
Save for Enterprise Distribution
The .ipa file needs to be saved on an FTP Server, or at least that's how I got it to work. For the "Application URL" field, use the path to the .ipa file you are going to save, for example,
ftp://ftp.company.com/Installers/myApp.ipa
Give it a Title, then in "Large Image URL" and "Small Image URL" give it a path to your large (512x512) and small (72x72) icon files, (I'm developing for iPad, so iPhone may be different). For example,
ftp://ftp.company.com/Installers/small.png
Save the .ipa file. Now you need to place your .mobileprovision file on the ftp server. Anyone that wants to run the app needs the file installed or they won't be able to run it. Now, I'm not sure if you will need a .mobileprovision file that has all of the device ID's built into it if you're not part of the enterprise program, but you can try and see. Once your files are all on the ftp server, you'll need to create an email that has links to the two files, but the link for the .ipa file has to be in a special format. For the provisioning file:
ftp://ftp.company.com/Installers/profile.mobileprovision
and for the .ipa file:
itms-services:///?action=download-manifest&url=ftp%3A%2F%2Fftp.company.com%2FInstallers%2FmyApp.plist
Now when you send this email to someone, they just need to first download and install the .mobileprovision file, then the .ipa file. Voila, they are running your program. Let me know if this works without the enterprise subscription. I imagine it would as long as the .mobileprovision file contained the device ID's.
I've found a much better way of distributing apps, but it requires you to have a PHP server. What you do is create a PHP file that generates the plist file on the fly and returns that. In the links for large image, small image and ipa file you pass in links to other PHP files that return those things for your specific program. When you want to install an app from a link, you just pass in the url like this:
itms-services:///?action=download-manifest&url=http://mycompany.com/php/installApp.php?app=myappname
In your PHP functions you would just insert myappname into the other PHP calls, which would pull the proper files from your server. Using this method, you don't need to store plist files for any of your apps as they are generated, which makes updating your apps easier since you don't need to retype the information every time, don't even check the checkbox for enterprise distribution, just save the ipa file over the old one and you're good to go. Also, it is easy to implement security and login features with this method. Also, you don't need to specifically install the mobile provision file, as it installs itself when you install the app. It is stored in the ipa file.
Just to clarify the PHP method, you create a php file that creates plist files. Copy a standard plist file created from an enterprise distribution build, then in your php file, set the headers like this:
$pathToAddFi = "installers/".$_GET['app'].".plist"; //points to the php server file location of your .ipa files. when you call this php script, you pass in the name of the ipa file you want to install. Note: this location doesn't actually contain any plist files! $root = "http://yourserver.com/php/root/"; //path to this PHP file's directory header('content-type: application/xml'); header('Content-Disposition: attachment; filename='.basename($pathToAddFi)); header('Content-Transfer-Encoding: binary');
Then you build a string replacing the urls for your items like this:
<string>".$root."ipa_serve.php?app=". $_GET['app']."</string>
and end it with one last header before you echo the xml string:
header('Content-Length: ' . strlen($myXml));
Lastly, you create a php file to serve your ipa file, one to serve your large image, and one to serve your small image. Should be fairly straight forward unless you aren't very familiar with PHP.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With