iOS Provisioning portal - wildcard App ID along with explicit App ID - ios

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...

Related

Does changing the app ID associated with a provisioning profile break existing apps deployed with that same provisioning profile

So at the company I work at we had created an iOS app. We created the Provisioning Certificate with the specific App ID for the app (not a wildcard). Now, we're deploying a second app that should be able to receive push notifications from the same server. In the interest of simplicity, it'd be greatly appreciated if both these apps used the same Provisioning Profile so as to not complicate the server with working out which one it should be using.
The dilemma, however, is this: I don't know if changing the App ID (from specific App to a wildcard) on an existing Provisioning Profile that is in use by an already deployed app will break push notifications and other such services for the already deployed app using that provisioning profile. I would try it out, but for obvious reasons don't want to go taking leaps of faith with things Production relies on to function.
Hopefully I explained that ok.
Thanks in advance
EDIT: To clarify, the existing app's ID will be satisified by the Wildcard I want to change the provisioning profile to.
I don't believe you can use a wildcard app id with push notifications.
The only way I can foresee this working with a single provisioning profile is for you to build both apps with the same bundle ID, which matches the app ID in the provisioning profile. The downside of this is that the two apps would not be able to both be installed on the same device at the same time.
If you need that functionality, you'll want to set up a new app ID with push notifications and work out the server side stuff to send push notifications to both app IDs.

What's the difference between an Xcode wild card and a com.domain.name App ID?

These have baffled me ever since I signed up for developers account!
I Need to Know which one to use when I submit my app to the store?
Also in target > build settings > code signing > provisioning Profile are those values as shown in the image, which one do I pick to submit my app?
The com.domain.name or wild card?
And lastly what in the heckaroo is the com.domain.name used for and what's its importance?
Wild card ids are for development purposes only. Suppose you're working on an app, and don't know what its final name will be. You use the wildcard app id until you've named it.
Once you've named it, you do the com.domain.name one for submission.
These must be unique across the entire iOS ecosystem, which is why they work this way. Provided no two companies have the same name and product name, there will be no collisions.
The wildcard app ID (defined as *) can be used for any bundle identifier (the one you set in Xcode).
If you app conforms to the following (taken from the Registering an App ID page in the Certificates, Identifiers & Profiles section of the developer portal):
If you plan to incorporate app services such as Game Center, In-App Purchase, Data Protection, and iCloud, or want a provisioning profile unique to a single app, you must register an explicit App ID for your app.
Then you need to specify an explicit App ID - the com.domain.name you mentioned. This must match the bundle identifier of your app you set in Xcode.
The App ID is tied to the developer account (I believe it can be transferred) and this is unique per application. For example, say I set up an app with the App ID of com.stackoverflow.rich, you could then not use that App ID.
The App ID must be an explicit App ID when finally submitting the app to the App Store.
When releasing for the App Store you need to set your App Store Distribution profile under Provisioning Profile -> Release. You can probably just press delete/backspace on the Code Signing Identity -> Release, and then the Automatic setting will pick up the correct certificate.
Whenever you use the Archive command (under Product), the Release build configuration is always used (unless you change it under the Scheme settings).
If you want more info about this have a read of the App Distribution Guide.
There's also a Technical Q&A on this topic as well.

modify who has access to OTA app

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.

New version release to app store under completely different profiles

So I took over an existing iOS app from a client, that is currently available for public use through the App Store. When I was given the project in xcode, I noticed that all provisioning profiles associated with the app had expired and all were under the name of the previous developer.
So, I added myself as a developer and joined the team and code signed the development copy under my credentials. I created a new ad hoc provisioning profile for testing, and released a version through TestFlight to some registered devices. No problems. The app is greenlighted to go live.
Can someone please help me out with the release process from this point on? Do I create a third new provisioning profile for App Store release, and tie it to the code signing in XCode? Is this going to be problematic considering the version that is live now is under completely different (expired) profiles from a different developer? Is there some alternative way I need to do it through Apple? I'm trying to be super cautious here... if for some reason I release the app and its crashing because of some step I didnt take by accident, the poop will hit the fan.
You're going to have to release it under a new name on the App Store and forfeit all the ratings and reviews. Apple won't let you swap developer profiles on an existing app.
Other developers may disagree, but it looks like a huge PITA. See here
Transferring ownership of an iPhone app on the app store
The official answer seems to be NO
I didn't interpret the question as regarding change of ownership of an app.
I read the question as: I've inherited maintenance of an app and we'll want to submit an update as the same seller.
In this case, you can generate your own certificates and distribution profiles, and you can then build and submit the app.
I have done this numerous times. That is, I have inherited responsibility for an app that I did not necessarily craft originally. I easily created new signing and provisioning credentials, appropriate for the app the be submitted as the seller (not me) on their behalf.
And for what it's worth, the App Store Distribution profile is necessary, but only used when the app is submitted, so Apple can ensure that it is coming from a developer that has the right to submit it. (Remember, these profiles are signed with the same certificates used to sign your app package.) If that Distribution profile should expire or change, it has no bearing on an app already in the App Store.

use iphone application without submitting to apple store

Here I am going to ask a non usual question.
I have created one application in iphone. But I do use some things/ codes that are not allowed by apple and hence it has been rejected. I can't say the things that I used.
It's a free application, but I want to distribute the same to many people using my website.
My question is Is it possible to create such kind of application and distribute without submitting the application to apple store??
using our Distribution profile OR using our provision profile for some personal use.
Thanks in advance
No. You can't. Because for using ADHOC distribution, you will need to generate CUSTOM BUILD with provisioning profiles for each device it will run on. Hence, it won't scale since you won't be able to generate a new build/release everytime a new user wants to download your app.
You could distribute it through CYDIA, but only jailbroken iPhones will be able to run your app.
Sorry to bring you the bad news, but the answer is no.
AdHoc would not be an option for you as you're limitted to 100 devices and you need to know the UDID of every device the app should be installed on.
All other things require a jailbroken phone on the user side.

Resources