Reputation: 4345
My question is different than other similar questions because the similar ones were asked during a time that the Apple Developer Portal was down due to hacking.
Is there a way to automate the addition of new UDIDs to a provisioning profile?
I work for a company with a beta app that has a slow-rollout of a 20 thousand user private beta for existing customers. In other words, I don't want to manually add 20K UDIDs with the ADP over the next 6 months. Keep in mind, I need to ask a user for their email address, send them an email in a beta manager, get them to open an email to click a link so I can get their UDID, then I need to manually open the ADP to add it. All of this needs to be done before I update my profile in Xcode, then archive a build to deploy to them. In the interest of sanity and using time efficiently to fix bugs that beta users report, this whole process seems insane. We've already added 50 this way and it's driving me nuts.
I thought that Fabric Beta might handle this nicely for me, but it doesn't.
Is there a command line interface for adding UDIDs? Or, is there a way to invite users via email, and if they open the email on their device, they can install our beta app without me needing to add their UDIDs manually in the ADP first? Does upgrading to an Apple Enterprise account fix this?
So far, I'm hitting dead ends everywhere. I read that Fastlane might handle it, but I haven't found any legitimate reviews from developers confirming this. Please Stack Overflow... work your wonderful magic.
Upvotes: 0
Views: 1803
Reputation: 4345
I finally figured it out.
Based on this question, and too much wasted time trying other solutions beforehand, I've decided the only reasonable way to accomplish this without violating Apple's terms of service (which you would be doing if you distribute apps to non-team members via the Enterprise developer portal) is to use TestFlight, create multiple apps in TestFlight (each of which need to have separate app names + bundleIds) of the same app and run multiple External beta sessions simultaneously. If you automate this with Fastlane, you can change the app name + bundleId for each version all at once, and upload them all to TestFlight all at once, to prevent one from going insane by needing to do the same thing many times over.
Each time you have fixes in a new build that you want to update the beta with, just set up Fastlane to automate bumping the build number and deploy it to TestFlight- then this will effectively reset your 60 day beta session.
Upvotes: 0
Reputation: 13630
The way to run an app on an iOS device without individually registering the device ID into a profile (which wouldn't work for you anyway, since there is a 100 device limit per account) is to use an Enterprise Distribution profile. With an app signed with an enterprise profile, it can run on any device.
The users will need to "trust" the signing identity, which involves going into settings. That trusting of the signing identity is a one time thing, however. This can be something you can include in the instructions to your beta testers.
In order to create an enterprise profile, you will need to sign up for an additional enterprise developer account here. It is $299 per year in addition to your regular developer account. Once you have this, you will create a new enterprise distribution profile and use that in your build settings to build / sign the app.
Note that the enterprise profile expires a year from when you generate it, just like a developer profile. The cert should last 3 years. If you plan to have users continue using the app over the time when the profile expires, it is best to build in a simple update check into the app that will prompt the users to update the app a month or so before the expiration. Once the profile expires, just like a standard dev profile, the app will simply crash on the users device with no explanation of why.
Upvotes: 2