Codesign application with provisioning profile on different account - iphone

I'm working on a game which uses Game Center for multiplayer gaming.
Now the time has come to test the game with another person.
At first - I thought it would have been easy - just send him the provisioning file which has been created with my developer account (and not his) along with the project.
Turns out he can't compile the application with my provisioning file, which is the only way from getting the dreaded "This game is not recognized by Game Center" message.
I can sign in, and even Search for Players - but whenever he signs the application with his own provisioning profile (which is a wildcard in terms of App identifiers) he can't sign into Game Center because the game isn't recognized. He has a 'Test User' account linked to my iTunes Connect account - but it seems that he needs to sign the application with my provisioning profile - which will only sign with my certificate.
How do I get around this?
Any help appreciated.

I assume you are using different Developer Accounts with different App ID's. The Game Center Game is tied to a specific Bundle Identifier which consists of the Bundle Seed ID and your Wildcard App ID. His provisioning profile for his Bundle would have a different Bundle Seed ID and possibly a different App ID which results in Game Center not recognising the game for your Tester.
For him to have access to the same App ID, you'd need to have a Team Developer Account to use multiple certificates for the same Provisioning Profile and App ID.
Instead, You could distribute an IPA to your Test User for him/her to test. I've described the steps briefly below from the top of my head:
Add his Device UUID to your provisioning profile and import it into Xcode
Create your Entitlements file (check out the guide linked below) and Set your Scheme to iOS Device and Click on Product -> Archive
Once Archived, In Organiser find your Archived App, click on it and choose the Share Button
The Contents should be an IPA Package and set the Identity to your Developer Provisioning Profile with your Test User's device
Save the IPA somewhere and send to your Test User
Ask him to Sync the App onto his Device using iTunes or send it out via TestFlight App
For a more comprehensive and detailed guide, check out this post on creating an IPA: How to create an IPA (Xcode 4)

Related

xcode app submission error: "no eligible software found, make sure this software is owned by your developer organization"

I'm getting the stated error when trying to upload an app submission to itunes connect on an organization I am a member of, but who's itunes connect username is different than my my apple developer ID.
The problem is I have a single Apple Developer ID I use for all my IOS development across multiple organizations. my.name#gmail.com That id has been added to multiple organizations in the IOS Member Center. On Itunes Connect however, it does not let you add an existing Apple ID (or existing Itunes Connect user on a different organization) as a new user to an organization.
So if I'm a member of 3 organizations, each one uses a different Itunes Connect email, usually the email for that org, not my main gmail Apple ID.
When trying to upload using XCode, I get this error since they don't match. How can I work around this? I fixed it for one organization only by using my co-worker's ID which matched for his appleID+itunes user. However I'd like to be able to do it on my own.
I tried adding individual org emails as xcode emails, however none of them are Apple Developer accounts, and Xcode refuses to use them.
How can I upload my app to a new org I'm a member of on Itunes connect??
EDIT
I tried using the Application Loader tool from Xcode menu, and I get a different kind of error shown below. I tried with App Store Build and Ad Hoc build. This is a development build only at this point which I hope to use for internal testing via Itunes Connect Testflight, so we're not using Release/AppStore provisioning profiles yet, nor have we even created them yet.
EDIT 2
Apple docs say:
"A single Apple ID can be associated with multiple Member Center teams. Using the same Apple ID, you can enroll as an individual and join other teams. However, you can only be associated with a single iTunes Connect team. Consequently, developers should create another Apple ID for different individual or company accounts that they want to manage separately in iTunes Connect."
This is true for itunes connect. But how does one then submit builds to these other itunes connect accounts, from xcode?
I was able to sort this out and thought I'd share for others looking for answers. Because I have a single apple developer id and multiple iTunes Connect ids, that is the core of the problem. Xcode would not let me put and use a non-developer account id into the user preferences. The solution was to use the Application Loader tool.
An Overview of necessary steps, which I use for every deployment now:
Make sure your Release build is using a Distribution provisioning profile and not just a development one. Don't use "Automatic" either, even if it sometimes works. I use an App Store profile, even for test flight releases via ITC. Create the provisioning profile on apple's ios center manually, call it something obvious like "[APP_NAME] App Store Distribution". Then in the Xcode build settings, set the release profile to this name. Secondly, make sure the Code Signing developer is the one on this profile, it doesn't always toggle default to that.
Archive your app as usual to generate the build.
Do not "submit" app from organizer, instead do an export, export to file.
When prompted, choose "App Store Submission" instead of "Ad hoc", otherwise it will fail.
In Xcode open Xcode->Open Developer Tool->Application Loader
From here you can add/select any of your itunes connect users independent of Xcode.
Choose "deliver your app" to submit, and choose the exported build file.
This should get the upload to itunes connect. If you are using TestFlight in ITC and it is setup, this will result in a new TestFlight push.
When creating a new app for each organization I work with, I always setup the new Distribution profile immediately, don't start using "Automatic" or let Xcode "Fix it...", as these may work once, but will likely cause issues or failed releases later. Always name your profiles to include the app name, distribution and App Store, as once you start doing this a lot it is easy to confuse them if you're just naming them non descriptively like "MyApp's profile".
"No eligible software" suggests that either the appID doesn't exist or it exists on the wrong developer account (perhaps Xcode auto created).
Check the team you're using normally (if it's wrong, XC might have done something useful but in the wrong account). Start with Xcode Preferences > Accounts then details of the preferred and current teams in question. After that, check in the devcenter (making sure you're logged in as the team you're trying to submit under) - check your appIDs and see if the app you're expecting to see there actually is.
Also make sure the iTunes Connect account you're using to upload has the "technical" role (per https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/UsingiTunesConnect/UsingiTunesConnect.html)
In my case the problem was I didn't realized that "Application Loader" has a login!
So I just select Window menu / Sign In as.. And enter the same developer account I used to create the "certificate and provision files", that I used to compile the app.
Please match the bundle Id from itunesConnect & Xcode.
I was getting same error & solved with bundleID.
Change your Application Loader user account to application's signed user account.

No value was provided for the parameter 'appIdName' when provisioning

I've just enrolled in Apple's iOS Developer Program (account type: Individual).
In my Xcode organizer on my iPhone 4 device I click "Add device to provisioning portal" => Xcode asks my credentials => I enter them => I see "No value was provided for the parameter 'appIdName'." dialog window.
What am I missing?
Part of the process in Xcode's automated submitting of certificate requests is that it looks for a "Wildcard" app ID. If you're missing this (for some reason, it's created on some accounts automatically and not created automatically on others?), this automated process will likely fail.
To fix it, try the following:
1) "Revoke" any existing certificates you might have from within the developer portal
2) Create a new "App Id"; title it "Wildcard"; and enter only " * " (without any spaces or quotes) as the suffix.
3) Try the automated certificate request from within Xcode again, and it should now work
Cheers!
I'm getting the same issue in Xcode. I think it's related to the wildcard app ID that Xcode creates for you. There seems to be an issue with that process that then cancels the device addition process that you're trying to complete.
You should still be able to add the device via the iOS Dev Center. Once logged in, go to the Provisioning Portal and you can add the device there.
Not perfect I know, but should allow you to start building apps and testing on your device until the Xcode issue is resolved.
You could avoid this problem by making App ID with wild-card id in iOS dev center.
I guess Organizer could not follow the updated policy related to App ID in iOS Dev Center/Provisioning Portal.
App ID with wild-card("*") is seems to be restricted in some function,
for example, Push Notification, Game Center.
and
developer also seems to be required to make sure the security option for the app related to the App ID.
Actually, my initial goal was to be able to test my app on iPhone device. Clicking "Add device to provisioning portal" still results into the subject error, but anyway my iPhone device have been added somehow to the Provisioning Portal and now I can see my app on iPhone (I haven't even tried to add it via iOS Dev Center). My guess is that this procedure takes multiple steps to be completed, and only the last of them still fails now, while the rest of them do succeed.
In my case the provisioning profile for that application was invalid, then I did the following steps:
Login on Developers Portal
Click on Certificates, Identifiers & Profiles section.
Go to Provisioning Profiles, in the list I realized my app profile
was invalid.
Click to edit it and selected the corresponding certificates (all)
and devices (all).
Download the profile and un Run. Issue solved.

iOS XCode & Code Signing

I am currently about to start work on an iOS app for somebody but they have there own Apple Developer account which they would like to us. How do I go about setting my MAC up so that I can use their account to build, develop and test their app on my Devices?
I am assuming that I will need to create a separate user account on my MAC. I have done this but when I try to install the certificates that they have created I get errors such as "Valid signing identity not found".
Why could Apple not make this process simple, I am always having to refer back to the documentation and still get confused just to start creating a new app!
You do not have to create a new user account on your Mac for this, but I know some developers prefer to have separate accounts when they are working with more than one developer account, for ease of development & distribution provisioning profiles.
If your client adds you (by Apple ID --> email address) as a team member to their account (assuming their account belongs to a company and not an individual) then you can start the development process by requesting and later receiving a signed development certificate. You'll then also need the required provisioning profile(s) to develop/distribute builds of the app.
No, you won't need to create separate account. Xcode provide the facility to use several provisioning profile and certificate at the same time.
For more information check this thread - Multiple Certificates/Provisioning Profiles in one Xcode organizer?
First of all you don't need to create new account on your Mac to develop iOS application. In Xcode 4 it become very easy to start developing and signing application. All you need to do is go to Organizer (most right button on Xcode toolbar). In Provisioning Profiles section you can see Refresh button on the botoom of the screen. When you click it ask you about your developer account information such as account name and password. Then it tries to install all profiles and certificates to your Mac automatically. Then you could select your profile and sign your app. If automatically install fails, check yourself that you download all you need for this.
Create keys on your mac and submit to Apple.
Download your certificate and WWDR certificate. Two!!!!
Add your device to the devices section and create Development certificate (Distribution as well ). Download it manually or via refresh in Xcode Organizer.
Hope it helps. Sergey!
Once you have your Apple Developer Account Credentials, You can follow gist I have created:
Apple's Code Signing Process

Upload IPhone app to device instead of other app

So I'm not that familiar with the process of Provisioning profiles and certificates.
Currently I have one app I'm developing that I can upload to my device.
Now, for testing reasons, I want to write a very simple app and to upload it to my device as well. The thing is, is that I don't want to configure another app in iTunes connect and provisioning profiles, so I thought maybe it's possible just to change the bundle identifier of the second app to be the same as the first.
However, in XCode I get the following error :
"Code Sign error: The identity 'iPhone Developer' doesn't match any identity in any profile"
Any way to make this happen?
If you set the bundle identifier of the 2nd app to be the same as the 1st, the 2nd app will replace the 1st one on your phone.
If you want the ability to have both apps installed at the same time, you need a new app id.
But you don't want to create a new app id for each test project.
The idea is to recreate the Team provisioning profile available for the Company developer program (I guess you subscribed to the individual developer program).
Create a new app id with bundle identifier set to *
Create the provisioning profile associated to this app id
Download and install this generic provisioning profile
With this wildcard profile, you will be able to install any test application.
Please request a certificate to apple through your paid developer account, generate a provisioning profile and install this in mac as well as in your device. then choose your provisioning profile and build and run your app through this provision.then it will install in device. There are details in developer.apple.com regarding to this. If you feels confusion please mail me sandeep.kniit#gmail.com. i will reply you asap.

Why must the bundle identifier be changed prior to submitting an iPhone app to the App Store?

I need to understand this piece better because when I reached that step in the app submission process, my comprehension went to hell.
While developing my app, my bundle identifier was com.yourcompany.${PRODUCT_NAME:rfc1034identifier}.
The instructions say
In the Properties Pane of the Target Info window, enter the Bundle Identifier portion of your App ID. If you have used an explicit App ID you must enter the Bundle Identifier portion of the App ID in the Identifier field. For example enter com.domainname.applicationname if your App ID is A1B2C3D4E5.com.domainname.applicationname. If you have used a wildcard asterisk character in your App ID, replace the asterisk with whatever string you choose.
Here are example App IDs and what
should be input into the Identifier
field in Xcode.
Example App ID:
A1B2C3D4E5.com.domainname.applicationname
Identifier to enter in Xcode:
com.domainname.applicationname
Example App ID:
A1B2C3D4E5.com.domainname.* Identifier
to enter in Xcode:
com.domainname.
Example App ID: A1B2C3D4E5.*
Identifier to enter in Xcode:
full_reverse_dns_company_and_application_or_suite_name
In the provisioning protocol, my App id is XXXXXX1111.*. So In the identifier I entered com.mysite.myAppName, which was absolutely arbitrary, but that seemed to be the point. I built the app submitted it, everything seemed to work alright. But then I tried to create the Ad Hoc distribution and upload it to my device and what happens is that the app loads, and then crashes after about 3 seconds. At first I couldnt figure out what was going wrong so I retraced all my steps until finally I got to changing the identifier in the target. I changed it back to com.yourcompany.${PRODUCT_NAME:rfc1034identifier} and my app then started to work perfectly on my device with the Ad Hoc distribution provision.
My question then, is what do I need to write as the value for the identifier in order to make sure that my app doesnt crash when the app store team is reviewing my app?
Thanks!
EDIT
The Ad Hoc Distribution, App Store distribution, and the Development profile i was using all have the SAME app id, which is a wildcard XXXXXXXXXX.. In the organizer, the only provisioning profiles i have for my ipod touch are my team provisioning profile and my development profile. Under the developer profiles category in the organizer, I have team, distribution, ad hoc, and development, all with '' app identifier. in the 'provisioning profiles' i have the same 4, with my ipod touch as an included device on the ad hoc profile.
In my info.plist my id is com.mysite.myappname. Everytime i try running the app on my ipod touch using my distribution ad hoc profile, i get the dialog box:
'cant run "myappname" on ipod "my ipod name"
The ipod 'my ipod name' doesnt have the provisioning profile with which the application was signed. click install and run to install the provisioning profile 'dev name Ad Hoc' on 'ipod name' and continue running 'app name.app'
when i click install and run, the app loads, and then crashes after 3 seconds, as i said before. it seems as though the provisioning profile is failing to install on the ipod touch.
The important thing is that the bundle identifier in your info.plist file, the bundle identifier in your provisioning profile, and the bundle identifier associated with your app ID should all match up.
If you were able to do a distribution build, it means that the bundle identifier in your provisioning profile is the same as the one in your info.plist file. And if Itunes connect accepted your submission, it means that the bundle identifier associated with your app id is also the same. So you are in good shape there.
Reading your description, it is possible that your add hoc distribution profile does not have the same bundle identifier as your app store distribution profile. If so, this would explain why you had to change the bundle identifier in your info.plist when switching from an app store submission to ad hoc distribution.