I am developing many apps for the iPad. We have many testers for development, but I would like to only allow access to certain testers to certain apps. I have a development build hidden away on my website the my testers access through their iPads. What I would like to know is if setting up my provisioning profile to allow for their devices allows them to download and test the apps. If so is there a way that I can build certain apps with only certain testers on it. I don't want to keep removing device IDs from the profile because I know that it would just waste the number of users I can assign.
Any advice is greatly appreciated.
If you're asking only about the tools provided by Apple's provisioning system, then yes, you can specify exactly which devices can run each app that you develop. And each app can have a potentially different set of (up to 100) devices that are allowed to run it.
You just have to create separate provisioning profiles for each app. And when you create the provisioning profiles for those apps in the iOS Developer Portal, you have to create either a Development provisioning profile, or a Distribution provisioning profile with the Ad Hoc distribution method.
Once you've made an Ad Hoc provisioning profile (or a Development one), its settings allow you to choose (via simple check boxes) the devices that you want to allow to run that app. And each separate provisioning profile has its own set of check boxes that can be different from the others.
Then in Xcode, change your projects' settings so that the apps are built with different profiles.
Side note: As far as I know, there is no way to convert an existing provisioning profile from "In House" to "Ad Hoc". So you may need to create a new provisioning profile if your current one is "In House". You CAN convert from "Ad Hoc" to "In House", oddly enough.
Side note #2: You are subject to the limitation that your Apple Developer account can only have a total of 100 devices associated with it (each specified by its UDID). But I'd guess that for basic testing like you're describing, this shouldn't be a problem.
You should try https://testflightapp.com/ this is used for beta testing.
When you upload a build to Testflight, you can change the permission who can use the app.
Maybe this helps you a bit.
Related
We previously developed apps with dev accounts enrolled in the Apple Developer Enterprise Program. We recently made the call to cease developing in iOS but still have roughly 50 devices active, running around 15 apps that we are continuing to support to the extent of reissuing Provisioning Profiles each year.
The process for the last 12 months has been generating new Provisioning Profiles once logged into developer.apple.com and generating a new .ipa file with iResign (https://github.com/maciekish/iReSign).
Our Apple Developer Enterprise Program is up for renewal and I'm wondering, is it necessary to renew the full membership in order to simply generate new Provisioning Profiles?
Would I be able to use Ad Hoc profiles?
The apps have been reissued to devices by a server accessed through Safari on the device. We do not have the UDID for the devices but may be able to get them if necessary for Ad Hoc profiles (the devices are scattered across the country).
is it necessary to renew the full membership in order to simply generate new Provisioning Profiles?
Yes.
After a lot of back and forth with Apple, this was the definitive answer we came to. This is unfortunate given it is only to support legacy applications that are no longer receiving any updates other than Provisioning Profiles.
Hopefully this can serve as a notice to any small-time devs looking to build in iOS to consider ongoing costs.
My organization has two teams setup on developer.apple.com. One is used for development and the other is solely used for publishing to the app store. As far as I'm aware there's only an iTunes Connect account associated with the publishing team. There is a record setup in iTunes connect for the release version of our app. Normally this setup isn't an issue, but we need to use Game Center and it requires an iTunes connect record. But the release version and development version have different bundle IDs. So Game Center cannot currently be tested on the development version.
Is there a way to test Game Center in our development version without having to either create a new iTunes Connect account for it or without having to change the bundle ID for the development version?
Yes you can, but one of your iTunesConnect accounts is useless and this answer assume you are an org on iTunesConnect not two different solo developer accounts.
You should never have two iTunesConnect accounts for one App.
Each iTunesConnect acc supports multiple appID's (think Facebook app + Facebook messenger).
each appID supports multiple provisioning profiles which each have share the entitlements of the App to use Game Center (or w/e other entitlements). Examples are Distribution, Ad Hoc, and Development.
To get what you are looking for, you want to use one iTunesConnectAccount, with one AppID (the one with the Game Center Entitlement), and then for that single AppID (one appID for every bundleID), create multiple profiles that you can use for release and Development.
To do this:
Go to https://developer.apple.com/account/resources/profiles/list, after logging with a dev account associated with your org's iTunesConnect account.
Hit the + Icon to add a new profile.
Select the type of profile you want (in your case Development).
You will see a drop down where you can choose which appID(with associated bundleID).
Finish setup of profile.
In Xcode, navigate to Preferences -> Accounts, and download manual provisioning profiles.
You should be able to put debug builds on physical device now that Development profile is imported for the same bundleID that you have Distribution enabled on and since Game Center entitlement is associated with that same AppID you shouldn't have any issues.
I'm assuming whoever created distribution profile to get a release version out never created equivalent development profile for the same app.
Here is high quality diagram illustrating the relationship of Accounts, Devs, Apps, Profiles, and Certs. (Credit MS Paint)
TLDR: Can't have one app for two accounts, you need to have one account w/ app and enable seperate profiles for distribution and development.
I would like to be able to test on my device an application with push notifications (as well as game center or in-app purchase) so from what I've read I should use unique - explicit App ID for that purpose.
But also I would like to test different applications, like from Apple source code, or some tutorials or applications made by my self for testing/experimenting purposes...These particular apps have no features such as In App Purchase and Apple Push Notification service...
I suppose in this case (for testing all these apps mentioned above) I should use wildcard App ID and create provisioning profiles using automatic option in Xcode's organizer instead of creating provisioning profiles for each app separately?
Can somebody explain am I missing something here , and is this a right way to do it? I know that Xcode now creates a provisioning profile automatically, but how do I tell Xcode for which application I want automatic provisioning, and for which I don't ?
What you described is perfectly fine!
For any apps other than the ones that you want to release in the App Store or through Ad Hoc builds you don't have to create explicit App IDs, expect of course, as you mentioned as well, if you want to make use of features like APNS or IAPs.
As for how you tell Xcode, you just need to set the appropriate provisioning profile within the target's build settings. But I actually think Xcode will do this job for you nowadays... So, this shouldn't be a real issue either...
Currently Apple is developing the new Developer Center, so I am not able to add new devices to my provisioning profile.
Is there another way to add a device to my apple-id and a provisioning profile?
Nope, there are no other channels to allow you modify and regenerate provisioning profiles while the 'Certificates, Identifiers, and Profiles' tools are down. When working within the bounds of the non-jailbroken iOS security model, only Apple holds the private keys that make provisioning profiles pass their cryptographic checks during application installation and periodically during app execution.
In practice, this means you are in the exact same boat as the rest of us 3rd-party developers; When the Dev Center is taken offline, we are compelled to wait to make any account modifications until maintenance (or a rebuild as the case may be!) is complete. Fortunately, the 'Certificates, Identifiers, and Profiles' tool is now back online and you should be able to make the kinds of provisioning changes you asked about in your question.
I am developing an iOS app of which my clients would like roughly 50 people to beta test. However, I don't want to have to keep adding UDIDs to my developer portal account and to generate a new provisioning profile each time. Is there a way in which I can distribute the beta without having to go through the aforementioned painful process of adding a new user? I'm thinking something automatic!
Look forward to hearing your responses!
Using a standard individual Developer enrollment, testing any app on stock OS iOS devices requires generating profiles with each device's UDID. No exceptions.
So you have to keep adding UDIDs to your developer portal (or let testflight gather them for you), or tell the client no more. (I would consider charging the client a sufficiently large additional amount for each extra device to be added after the initial batch, that you will become happy to do so, instead of it being a "painful" task.)
The Enterprise program can only be used for employees of the enrolled developer, not clients or customers. If your client has a D&B rating, then they might be able to enroll themselves in this program to allow distribution to their employees without gathering UDIDs.
The developer portal has an option in which you upload a list of your user's UDIDs (look in the device tab and click "Upload file"). Just prepare your beta user's UDIDs and upload once, then you can just generate an ad hoc profile once and wirelessly distribute this.
Note the file format should be (tab delimited):
device_id_hex_40_chars description_text
... ...
The first line of the file is ignored, so you can add a header.
If you're willing to pay the $299, then you can join the iOS Enterprise Developer program and distribute applications using iOS Enterprise distribution. This lets you distribute to an unlimited number of users.
https://developer.apple.com/programs/ios/enterprise/
Otherwise I'd suggest Testflight.