How to distribute iPad app by ad hoc methods - ipad

I have been working on a productivity app for 5 members of a company. I installed the app onto the iPads myself before sending them out. Now how do I send updated versions of the app to them?
The Apple site says ad hoc distribution can be done by email or from a web server but so far I can't find anything that explains HOW the app gets installed onto the iPad. Has anyone done this or knows how it is done? I figure some action on the part of the end user is needed which maybe a sticking point...
I'm correct in thinking that the app will run until the provisioning profile on the device expires and then be useless right?
Thanks,
Steve

Normally when you distribute applications via the ad hoc method, no application artwork is displayed when the user looks at your application inside the iTunes interface. However, if you place a copy of the 512×512-pixel PNG of your icon in your application bundle and name it iTunesArtwork without any file extension, this will be used by iTunes.
To deploy your application to your users via the ad hoc method, you need to create a distribution certificate, register any devices you plan to use, and create an ad hoc provisioning profile in the iPhone Developer Program Portal.

I haven't tried this yet, but bookmarked it because it looks interesting: http://www.readwriteweb.com/mobile/2010/12/apple-best-kept-secret-how-to-do-ad-hoc-installs.php
Hope this helps!

You can distribute the ad hoc build along with the provisioning profile that contains the users UDID via email, website, however you want. The tester simply drops the certificate and app onto iTunes and syncs.
If the provisioning profile expires for the user, simply generate a new one and distribute it along with the new build of the app.

If you're using a CI server, I have a quick slide deck and some supporting files for my system, which uses Hudson to automate the build process, as well as deploy the app for OTA intallation. End result is when I commit something to SVN, my clients get an email a few minutes later with a link that directly installs the new app on their phone.
If you don't have that infrastructure set up (or aren't looking to take it on as a project), I've been hearing great things about http://testflightapp.com/, although I can't say I've used them myself.

Related

Exporting Xcode app for individuals to download over web server

I have an Xcode app that I have just finished developing. I do not wish to put this app on the App Store. Instead I would like to build the app and then serve it over my local host, so anyone connected to the URL on my network can simply download the app and use it.
How exactly can I achieve this?
One issue I am running into when selecting the organizer after archiving is that the buttons for export is grayed out. I am signing as my (personal team) but it does not seem to cooperate. How can I do this?
You have a few options here:
Enterprise developer account
Additional cost and can't upload to AppStore, users when installing for the first time have to trust the developer before the app will run
Ad Hoc profile
Requires adding UDIDs for all of the devices that you want to be able to run. Profiles will eventually expire (12 months I think). Would usually use this option with a service like HockeyApp/Diawi
Testflight
If you use internal testers then limited to 100 users that have to be invited to the Apple developer tea. If using external testers then can have much higher number of users, but app has to go through a short review process similar to when submitting for review to the app store

How do I deploy an iOS app without passing from the public store

I'm currently developing an iOS app for a company as a consultant and they explicitly asked that the app should not be visible in the public app store but I need to distribute to the employees and contractors.
What are the necessary steps in order to achieve this goal? I've found info on the web about the Apple Enterprise program but the procedure for the distribution is somewhat unclear to me, as the documentation I found is messy.
Could someone please explain what do I need and what are the steps to follow in order to distribute the app in such fashion? I've made clear the steps to get to the .ipa file, I need to put the file on the devices.
Thank you.
You can build your own server and host the application there itself.
You need to uploaded the IPA file on the server and create an HTML page through which it can be installed directly in the device.
This method is called Over The Air distribution. TestFlight uses the same method to do so.
Please refer this link for complete process:
http://aaronparecki.com/articles/2011/01/21/1/how-to-distribute-your-ios-apps-over-the-air
Create a distributed provision file for you app(You need to add the device identifier who want to install the app).
Build you app and distributed with ad hoc
Then the employee can install the app from itunes.
You can also enable the employee to install from safari, please refer here for more detail information.
If you release only a file.ipa to install that you need the jailbreak on the device, that's if is a big company is impossible, but you have a 2 possible ways:
1) huge an slow but is effective, finish you app and pass the project on a laptop, create new buy a new developer program only for this company, setUp the laptop with new certificate and install the app on all company device manually one by one, ins very slow and huge process, but it work, no app on appStore, and no body know that your project exist.
2) publish on app store with AdHoc provisioning profile, have 100 device per App, but you can publish more same app with different name ex: App1, App2 ext.
The app is on appstore, but not visible, only the device with AdHoc Provisioning Profile can install the app.
3) make a jailbreak on a device company heheheh
Hope this help you
Firstly, the app store is the the primary route for App distribution for iOS.
That said, I have done beta app distribution in the past using test flight.
http://testflightapp.com/
This size has usually been small, but you are usually limited by Apple to 100 ad-hoc devices per year. If your install base is going to exceed that, then you may need to look into other methods. Such as enrolling in the Apple's enterprise Program, which depending on the size of the company you're working for, might be a better option.
https://developer.apple.com/programs/ios/enterprise/

Sending tester iOS app

I am programming an iOS app for somebody living in a different state. Last time I finished an update for him to test, he had to drive over to get it on his iPad.
He's all set up with provisioning profiles and such. Last time I just hit "Run" in xcode and it ran on his iPad.
Is there a way to send him the app as a link in an email? The app is very small (around 20mb). He doesn't have a mac so he can't open the xcode file, but he does have iTunes.
What other (preferably free) way could I send him the app via internet to test?
Thanks in advance
If you are targeting iOS 8+ you can actually setup Beta and Sandbox testers directly in iTunes Conenct, without needing any device UUIDs, just email addresses. This makes it a synch to setup and manage, without caring about which device[s] someone owns.
Just go to iTunes Connect > Users and Roles. There you can add people. Then going into your actual application, you can assign people to participate in testing. You then just upload your application via Xcode (like you would for a release) and lastly, approve that build for prerelease, which will allow all of your testers to install it.
Original Post:
We use Ad Hoc distribution to handle this. It took us awhile to get it all working but once we did it has worked amazingly for all of our beta testers. We send new updates of our app to a handful of people to test before we push updates.
Here is a tutorial that may help.
You can use Ad Hoc provisioning profile for his device and archive your project for Ad Hoc.

IOS Enterprise Distribution Through OTA

We have build an enterprise iPad App and now we want to give it to our employees. Initially when testing, we used ad-hoc distribution collecting all the test device's UDID and then creating the profile.
Now going live we want this app to be deployed in a secured web server and send the link to our employees, so that they enter the username and password before accessing the link.
There are around 500+ devices we need to install this iPad App. Do i need to collect all the UDID and then deploy the .ipa file, because Apple documentation says:
Create an enterprise distribution provisioning profile that authorizes devices to use apps you’ve signed.
If not that way, do the user needs to install the profile.mobileprovision file and then install the .ipa file?
We are still unable to decide how to deploy our app because of this issue. We would like to avoid the app approval process because it App handles a lot of sensitive data.
Can some one help me on this, how to do a OTA deployment for enterprise Apps?
As of December 2011, these are the steps:
Create a provisioning profile in your Apple Enterprise account
Set this as the Code Signing Identity under the Build setting of your app.
Make sure the Bundle ID matches that of the provisioning profile.
Select Product > Archive to build IPA file.
Click Share (aka Distribute) button after selecting your Archive.
Set Contents radio button to iOS App Store Package (.ipa)
Make sure Identity in dropdown is the one used from Enterprise account.
Click Next
Select the check box "Save for Enterprise Distribution"
For Application URL put in the URL that points to where the ipa file will be placed (example: http://oursite.com/myApp.ipa)
Click Save. This will save a plist & an ipa file for you.
Place these files on your server with a link formated like this:
<a href="itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=http:/oursite.com/myApp.plist" id="text">
Go to this page from your device and click the link to install the app
Probably the best way to distribute your enterprise mobile app and then securely manage users, groups, data and devices is using a Mobile Device Manager (MDM) tool suite.
iOS provides specific APIs that support enterprise deployment via MDM products with API level features like Per App VPN connections that allow you to firewall a DMZ application server to only connect to a specific signed client iOS app. The vendors also provided authentication SSO integration and encrypted storage on the devices to sandbox your enterprise apps from other untrusted personal apps on a BYOD device.
Here's the Gartner 2013 review of MDM products:
http://www.business.att.com/content/whitepaper/Gartner-MDM-MQ.pdf
The 3 major players are now: Air Watch, Mobile Iron and Citrix XenMobile.
NOTE: I don't work for or have a vested interest in any MDM vendor.
There are two solutions
Try testflightapp.com
It does everything for you. It even has a SDK which I found very useful in debugging scenarios with logs and crash reports.
If you are looking to have your own hosted solution for the enterprise then
http://hockeykit.net/ is the best bet.
It has a client application which makes the upgrade process painless. It also have a server side code which you can deploy on your server.
https://github.com/TheRealKerni/HockeyKit
Update 2013-11-23:
We have been using Diawi happily for quite some time.
You can also use my shell script that will help you a long way with generating the necessary files and links:
https://github.com/sveinungkb/ios-ota-buddy
You do not need to manage UDIDs if you are using an enterprise profile.
To install an enterprise app you need a provisioning profile built with your distribution certificate on each device. See Does an iPhone Enterprise provisioning profile need to specify phone UUIDs like an ad-hoc provisioning profile does?
I've created tool (it's beta, so please be patient with it:)) for generating manifests from ipa file online:
http://manifest-generator.knejzlik.cz/
It generates plist with index.html file. All you need is to put content of downloaded archive to your site.
You can use InstallFish.com for this.
It allows OTA distribution for both IOS and Android. It also has a feature to automatically get the UDID and create your own appstores.
You will still need to provision them via your enterprise account but it makes the whole process of OTA installs much easier, especially for enterprise distributions.
You can use hockey, diawi etc. but sometimes you just want something simple that allows you to host it on your server. I was searching for a simple, basic php script that can do this but did not found any that suited my needs so I wrote a simple single php file server by myself and you can find it here:
https://github.com/leszek-s/LSIPASERVER
It has a list of all uploaded ipa files, upload page with password protected upload and each uploaded ipa has it's own page so you can send a link to specific uploaded ipa to someone. Feel free to use it on your own server.

iPad enterprise distribution options

We have an iPad app that we would like to distribute internally. We're looking into "Enterprise Distribution". The set of requirements I have been given include that the method for distribution is to be that a user goes to a secure website from an iPad, logs in, and downloads the app. The app then works for them.
Users who do not have access to the website should not have access to the application. We can easily prevent them from downloading the app by forcing them to log in. However, it is not obvious to me that after they download the app (via an .ipa file?), that they couldn't just give it to someone else, something that is not allowed.
It looks like a way around this is to have Distribution Provision Profiles, which determine whether a given app will run on the device. However, it's not obvious to me that those couldn't just be copied as well.
http://manuals.info.apple.com/en_US/Enterprise_Deployment_Guide.pdf
Once you create the enterprise distribution provisioning profile, download the
.mobileprovision file, and then securely distribute it and your application.
Sadly, I don't know enough to know exactly what I should be asking, but here goes:
Can ipa files just be copied from one Ipad to another, allowing anyone to use any given app? (assuming there is no other protection on the app)
If the answer to 1 is yes, is there any reason to believe that .mobileprovision files will help me?
Every device has a UDID, a unique identifier. This is how Apple enforces the 100 development devices rule for individual developers. You collect UDIDs as part of the download process, issuing the provisioning profiles to registered users.
To answer your questions:
Yes, theoretically, without DRM or provisioning, an ipa can be synced to iTunes (or manually copied with third party tools) and then moved to another dewvice.
Yes, .mobileprovision files include UDIDs in them which are pretty much unique to a given device. (The exception may be on jailbroken devices, which, if I recall correctly, can spoof a UDID.)
EDIT:
Just to clarify, in response to your requirements:
The set of requirements I have been given include that the method for distribution is to be that a user goes to a secure website from an iPad, logs in, and downloads the app. The app then works for them.
I would add a middle step.
User logs in.
User submits device info
You create a provision for the device
The user then downloads the app and the provision.
This does not stop the user from giving out the app to others, but it's the best you've got. You can also require the user to log in inside the app, with the same email as the one used to register the UDID, theoretically.
It's now July 2012. Apple's documentation on how to create and distribute an Ad-Hoc iOS application remains stuck at iOS 3, is over-complicated, overwhelming, and often wrong.
With an Developer Enterprise Program license (and a fair bit of patience), you can create an .ipa file, which you can stick on your website.
Your users can then navigate to this webpage on their iPad's Safari, click on a download link to download and install your app onto their device. No iTunes required.
Your app will need (amongst other things) to be signed with a distribution certificate, which you create on the Apple Developer website, but my point is that once you have jumped through all of these badly documented hoops, you can just stick an .ipa and .plist file on a webpage, and ANY user can install your app with it.
Even your Aunt Gladis, who lives 200 miles away and doesn't work for your company.
Mind you, if Apple finds out that you have distributed your app to anyone who doesn't work in your company, they will pull your license.
Getting the Enterprise Account takes a lot of work. Apple will want your DUNS and possibly other proof that you're who you say you are (and that you're an enterprise).
Going the other route (individual developer) will allow you to post your app (make it free so your users will not have to pay!) in the store. Your app can require an account on your local service that no one outside your company will be able to acquire, which will prevent people outside the company from using it. The risk here is that Apple will reject your app for this reason.

Resources