IOS – Deploy iOS app on personal devices

code-signingdeveloper-programdevelopmentios

I've been working on a small iOS app, intended as a gift to some family members. To my dismay, I'm finding a lot of barriers to attempting to deploy the app. It largely revolves around signing the app to actually be runnable on devices in question, which aren't rooted/jailbroken, and don't have any other particular reason to be.

From my research thus far, I've gathered that the free provisioning Apple provides for can only produce certificates valid for 7 days. Since the app depends on persisted, user-generated data, even were the recipients willing to reinstall every week this would still be a non-starter. On top of that, the Apple ID associated with said devices is a very old ID that a known issue has Xcode being unable to verify the ID. So the free provisioning is not an option.

To an extent I'm balking at the Apple Developer Program subscription fees. However, I'm wondering whether that would even fix the issue? Is there a method within the (paid) Apple Developer Program to deploy directly to local iOS devices, for long-term use, without publishing to the App Store or going through any sort of approval process with Apple? Is this supported by the Ad Hoc deployment provisions of the program? And in that case, would there be a way for an installation of the app to be able to survive later ceasing to renew the Developer Program subscription?

I'd really appreciate if there were a way to deploy as such for free that can work with a legacy Apple ID, but I've already gotten the impression that's not the case – correct me if I'm wrong.

Best Answer

If you're willing to pay the 99$ yearly Apple Developer Program enrollment fee, the easiest option for you would be to use "Ad-hoc Distribution". This is slighly more involved than TestFlight, but will allow your users to use the app for a full year instead of 90 days.

Essentially you need to get the UDID (unique ID number visible in iTunes or on the device) for each of the devices that you want to deploy to. You add those UDIDs to in the Developer Portal and then you sign the app with your certificate and add your provisioning profile with the UDIDs in (these steps are automatically done by Xcode). It is really much simpler than it sounds like.

You can then install the app on all the devices for which you had UDIDs. They will last a year before you need to renew your enrollment in the developer program.

Note that you do not need the Apple-IDs used on the devices you want to deploy on (in contrary to TestFlight). Therefore you will not have the same problems with Apple-IDs here.

Another option is to use the more expensive (299$) Enterprise Program (note that you need to own or otherwise be entitled to sign for a business to enroll). Here the signing certificate is valid for 3 years, however the actual provisioning profile still expires after 1 year. So you would need to pay the fee every year, and users will need to be online to renew the profile, etc.