Unexpected generated explicit App IDs - ios

Can we still use wildcard App IDs on Connect?
I have just added an app on iTunes Connect by clicking + and New iOS App. It has generated explicit IDs for all my apps.
For Bundle ID I chose "Xcode iOS Wildcard App ID - *" and typed a Bundle ID Suffix like "com.testapps.test". I filled in the rest of the form and created the app.
In member centre under App IDs, I can see an App ID with name "com-testapps-test" and ID "com.testapps.test", with Game Center and In-App-Purchase enabled. I didn't create this. I don't remember this happening last time I created and app on Connect. In fact there are now explicit App IDs for all apps I have created previously, which didn't exist before. Furthermore when I refreshed my account in Xcode Preferences, it has created and downloaded Development Profiles for all these IDs.
When I go back to Connect to look at the new App and choose About This App under More. It has Bundle ID "com-testapps-test - com.testapps.test" rather than the wildcard and suffix. If I try to change it to use the wildcard ID, I get "Your app information could not be saved. Try again. If the problem persists, contact us.".

Related

Is it possible to distribute client iOS app with my distribution profile?

I got one doubt, is it possible to distribute client iOS app with my distribution profile.
You can distribute any iOS app with your profile. The profile should contain app id which is created in your account. So create app id matching the bundle id of the app in Xcode (if this bundle id has already been registered as app id in a different account then the bundle id should be changed) and then create a profile with your certificate and the newly created app id. That's it
An app ID is a string used to specify an app, or set of apps. An app ID's primary use is to specify which apps are authorized to be signed and launched.
An app ID has two parts: the team ID followed by the bundle ID search string. The team ID is a 10-character string generated by Apple. Each development team is assigned a unique team ID used to identify all your apps. A bundle ID search string is traditionally a reverse-domain-name style string.
The following guide will show you create an App ID in the iOS provisioning Portal. To create an App ID, you need to have an Apple Developer account and be a member of the iOS Developer Program.
Step 1. Go to the Apple Developer Center
Log in Apple Developer Center, then click "Certificates, Identifiers & Profiles".
Step 2. Create New App ID
Click "Identifiers" under iOS Apps
Click on the "+" sign near the top right corner to add a new App ID. In the next screen you will be asked to create the App ID you want to use as well as the description you want to give it.
Note: copy and save the Bundle Identifier you created because you will need to enter it into the iCreateApp when publishing your app.
After that you will be brought to the confirmation screen. Hit submit once you looked over it.
Click "Submit" and it will create the App ID.
Step 3. Enter the App ID
Open iCreateApp, enter the bundle identifier (App ID Suffix) into App ID field.
After all the above process follow steps: https://support.magplus.com/hc/en-us/articles/203808748-iOS-Creating-a-Distribution-Certificate-and-p12-File

Creating an App ID with xCode

As I understand xCode is capable of creating an App ID on developer portal . I have created a test application with the bundle identifier "com.xxxxxExample.appname" . However nor a wildcard or explicit is created on developer portal and application runs on on the device using the team provision profile.
For education purposes I want to know whether xCode is capable of creating wildcard App IDs on the developer portal ?
If it's there a way to create it using xCode, how should I trigged it ?
On documentation it specifies as follows ,
Xcode creates an App ID to match your bundle ID, which is a unique
identifier for your app stored in the app bundle. Xcode initially
creates a wildcard App ID and an explicit App ID only if needed
Xcode provide to create an explicit App ID with the specific bundle id when you modify the default settings of the Capabilities of your application.

How to completely remove bundle id in iOS development?

How can I reuse the bundle ID I have created for the app ID? I even delete the associated app ID but the bundle ID still unavailable.Does it to say bundle ID couldn't be removed completely once created?
The bundle id can't be reused as exact. For example com.abc.xxx can be used only once. If you had created this app Id from one account, you can't create the same app Id from the other account. However, you will still be able to create a new one as com.abc.xxx1 like or so. There should be atleast 1 character difference in the app Id's
If you want to delete an app ID, follow these steps:
Open https://developer.apple.com and enter using your credentials.
Click on Identifiers under the Certificates, Identifiers & Profiles section.
Now click on the App ID you want to Delete.
Click on Remove next to Edit your App ID Configuration.
Again click on Remove in the confirmation message that opens.
I'm not sure what your exact scenario is, you didn't provide enough information to know that. However, I came across a similar problem which was as follows:
Some time ago I registered a new Apple Account and created an iOS app with it. I did not pay for that, i.e. the app could only ever be used for 7 days. I've never submitted that app to the app store. Nonetheless, the bundle identifier of the app was associated with that particular account.
Some time later I registered another Apple Account. This time with a payed subscription. When I attempted to sign the app I created with the first account, Xcode complained as follows:
Failed to register bundle identifier. The app identifier "xy" cannot be registered to your development team because it is not available.
and
No profiles for 'xy' were found. Xcode couldn't file any iOS App Development provisioning profiles matching 'xy'.
It seems that the bundle identifier gets strictly associated with the provisioning profile of the first account. The way to solve this is to delete that particular provisioning profile. You can do so by going to the following folder and deleting the corresponding file in that folder:
~/Library/MobileDevice/Provisioning Profiles/

iOS Distribution: Can I change the bundle identifier later on, to match it the reverse domain name of my customer?

I am an independent developer (coming from Android). I developed an app for a customer, and used a work title for this project as bundle identifier.
So, now comes the time, where I want to move to testing on a limited amount of devices with ad-hoc distribution provisioning profiles.
For this I need to create an App ID with a bundle identifier. So, my customer will finally want his app distributed under his reverse domain name.
Can I change the bundle identifier later on, to match it the reverse domain name of my costumer?
Bundle Identifier (Application Id) is an unique identity for any application. You can change it for any application by creating new Apple Id on developer account any time you want until you upload your application on Apple store.
Once you upload your app on Apple store, You can not change it. As if you change it afterwards you will not able to update your app and it will be considered as a new app with new bundle identifier instead of update of existing app.
Sure. You can change it anytime.
You can't change the project name in this field in Xcode, however:
You'd have to rename the whole project to change the last greyed out part of the Bundle ID.
Notice however that you can never change the Bundle ID after the app has gotten to the App Store.

What is the difference between the app ID and the bundle ID? Where is the app ID in the Xcode project?

In the pList file, there is a bundle ID of the form com.mycompany.myapp, but Apple also provides an app ID on the developer portal.
Thus, basically, what is the use of the bundle ID? Where can we find the app ID in the Xcode project?
Answers to OP Questions
What is the difference between the app ID and the bundle ID?
Because most people think of the App ID as a string, they think it is interchangeable with Bundle ID. It appears this way because once the App ID is created in Member Center you only ever use the App ID Prefix which matches the Bundle ID of the Application Bundle
Where is the app ID in the Xcode project?
You don't find the App ID in Xcode. It is an object (not just a string) in Member Center. Xcode is where the Bundle ID is found. It is specified when creating a new project. (screenshot below) Each Target in a project will have a unique Bundle ID. It can be found/changed by selecting the project in the Project Navigator the choosing the Target and either General or Info from the Jump Bar.
The Xcode interface is described here or here (depending on how Apple is feeling that day).
What is the use of the bundle ID?
It uniquely defines each App. It is specified in Xcode. A single Xcode project can have multiple Targets and therefore output multiple apps. A common use case for this is an app that has both lite/free and pro/full versions or is branded multiple ways.
.
Definitions
App ID
Think of this as an object in Member Center with lots of metadata including:
App ID Description
App ID Prefix
App ID Suffix
App Services
App ID Description
Alphanumeric plus spaces
Sometimes you are shown this instead of the App ID, or a dropdown is sorted by this App ID
(I always make this the same as the App ID with the dots changed to spaces)
App ID Prefix
Select from a list of available hashes in the Team ID format (see below)
You pretty much always want to select the one labeled "(Team ID)"
App ID Suffix
A reverse-domain name style string
This must match the Bundle ID specified in Xcode
Explicit App ID
Describes an App ID with an App ID Suffix that contains no wildcards
Can only be associated with a single app (by exactly matching a Bundle ID)
Compatible with all App Services
Wildcard App ID
Describes an App ID with an App ID Suffix that ends with an asterisk
Can be associated with multiple apps (matched similar to CLI/bash shell wildcard matching)
Not compatible with Game Center, In-App Purchase, or Push Notifications App Services
App Services
A combination of
Data Protection
Game Center
iCloud
In-App Purchase
Inter-App Audio
Passbook
Push Notifications
Team ID
A 10 character alphanumeric hash
Unique to every Developer Account (as in the account that costs $99/yr, not every developer on the account)
Apple ID
A unique integer assigned by Apple when an app is first created in iTunes Connect.
Bundle ID
A reverse-domain name style string
Defined in Xcode
Uniquely identifies an Application Bundle on a device or simulator
Must have a matching App ID registered with Apple in order to deploy
Used to distinguish app updates vs. new apps
Application Bundle
The result of the Build process in Xcode. Though it has an extention of .ipa it is a zip file. The content is a very specific directory structure and holds everything the App needs. It looks like someone took a Mac .app file from /Applications, put in a directory named Payload, zipped it, then change the extension.
Target
Every Xcode project has at least 1 target. Each target specifies an app that can be built from the project.
SKU
Apple allows you to store a Stock Keeping Unit string (alphanumeric, cannot have spaces) for each app in iTunes Connect. Apple doesn't do anything with this except display it on reports generated for your record keeping.
.
Create Xcode iOS Project dialog in Xcode
.
Create App ID page in Member Center
.
App Information page in iTunes Connect
Bundle ID is the identifier of an App, but App ID is not. App ID is the connection between App and provisioning profile.
From "About Bundle IDs" section in here, you can see, "A bundle ID precisely identifies a single app".
And from here, you can see, "An app ID’s primary use is as part of a provisioning profile; it specifies which apps are authorized by the profile to be signed and launched.".
App ID has 2 parts: "bundle seed ID" and "bundle ID search string".
Bundle seed ID makes Apps share keychain data, that is to say, it's the key chain entry of Apps which have the same bundle seed ID.
Bundle ID search string defines how many Apps are covered by this App ID. If you use a Wildcard App ID, that means many Apps will be authorized by the provisioning profile associated with this App ID. For more details please refer to here.
Simply, A bundle ID precisely identifies a single app. A bundle ID is used during the development process to provision devices and by the operating system when the app is distributed to customers.
During the development process, you use an app’s bundle ID in many different places to identify the app.
Whereas, An App ID is a two-part string used to identify one or more apps from a single development team.
The Team ID is supplied by Apple and is unique to a specific development team, while the bundle ID search string is supplied by you to match either the bundle ID of a single app or a set of bundle IDs for a group of your apps.
There are two types of App IDs: an explicit App ID, used for a single app, and wildcard App IDs, used for a set of apps.
sources: Bundle ID , APP ID
Multiple apps can share the same App ID. The App ID does not uniquely identify an application.
An App ID is a two-part string used to identify one or more apps from a single development team
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/AppID.html
The ID that you see in iTunes Connect, which is unique across apps, is known as the application's Apple ID. I apologize for the confusion because no one at Apple will.
App id is a combination of two strings, are separated by a period (.).
String1 is a team id, Which is assigned to the development team.(provided by apple)
String2 is a bundle id, is selected by you.
App id is having two types.
Explicit App ID: Here team id is used to match only one app with a specific bundle id. This app id is used to match one app only.
example: TEAM_ID.BUNDLE_ID
Wildcard App IDs: Here team id is used to match multiple apps with multiple bundle ids. This app id is used to match multiple apps.
examples: TEAM_ID.BUNDLE_ID1, TEAM_ID.BUNDLE_ID2 ...

Resources