HealthKit iTunes Connect entitlement error - ios

I had enabled health kit capability in Xcode and HealthKit service in Developer center at some point for my app. But then I disabled it right away as I decided to not include it. My app doesn't have any HealthKit related stuff in it, I have disabled the capability and also disabled it in developer center. However, when I try to submit my app in iTunes connect, it gives me error:
Apps that use the entitlements [com.apple.developer.healthkit] must have a privacy policy URL for [English]. If your app doesn’t use these entitlements, remove them from your app and upload a new binary.
When validating the app in Xcode, it still shows me health kit entitlement: com.apple.developer.healthkit
Any idea how I can completely get rid of this entitlement from my app? I have been struggling for over a day now :(
NOTE: this is a new app, it's not available in the app store yet.

I faced exactly the same problem, and I finally fixed it. Be sure that you remove any reference to HealthKit not only in your app but also in your developer profile for this app.
Go To the developer portal
Click the App IDs link on the Certificates, Identifiers & Profiles developer page
Select the App ID you are using in your app
Click the Edit button
If HealthKit is enabled, disable it and click the Done button
Regenerate all provisioning profiles using that App ID
Open Xcode
Turn Healtkit to off in your project (it looks like you already did it, I write it for the other)
Check you have no trace of Healtkit in your entitlement file, plist file and HealthKit is not in your Frameworks.
select Xcode > Preferences > Accounts. Select your team and click View Details
Click the refresh button in the bottom left corner to refresh your provisioning profiles
Restart Xcode and rebuild your project
Submit your app. During the submit process, you should not see the Healtkit Entitlement anymore.
NB : If you still face the problem, I suggest you to delete all your provisioning profile at step 5 and try again. Don't forgot to restart XCode.

There is option of Privacy Policy URL inside the APP, just fill that URL with the URL of your company and save and submit the application.

Related

How would I "Upload to App Store" to a client's iTunes connect?

I have created an app for a client, and instead of uploading to my iTunes connect account, I want to upload it to HIS (my client has a developer account, etc.). After I archive the project in Xcode and press the "Upload to App Store..." button, I am prompted the following message:
To submit to the iOS App Store, select a Development Team to use for provisioning:
And then naturally my own name is selected. When I press the "View Accounts..." button, I can see a "+" button to add an Apple ID. I am guessing I would add my client's Apple ID? And then his name will show under Development Teams and I select his name?
Someone please help me understand how to submit to someone else's iTunes connect account. Thank you.
There are two things to need to get:
Your client's private key (.p12 exported from keychain) for his distribution certification, you need it because App Store distribution cert can only have one per bundle identifier. Click here for instructions.
Your admin access to his developer program, this enables you the ability to upload archives, you will need sign in this account in XCode. Ask your client to send you an invitation. Click here for instructions. Do a Download All in Xcode preference after this step.
Then you can can submit again it should be all set.
For the developer program your client should invite you as an admin/developer using your main developer id(you don't need a new apple id for the dev. program i.e. you can switch teams).
You have to accept the invite
Login in the apple developer's website and switch to your client's team and create the certificates and provisioning profiles you need for the app.
Open X-Code preferences and download all the provisioning profiles you need.
In your app settings change to the distribution profile of your client(the one you just downloaded in the x-code preferences).
Create a new archive of your app in Xcode. Then follow step (7 and 8) or step (9 - added 29/09/2016)
When the organizer opens up after the archive is ready, highlight it and press export, then select - "Save for iOS App Store Development". When the export actions are ready save the .ipa file in location of your choice in your computer.
After all this is done, open up Application Loader, it is a tool which comes with x-code. Sign in with your apple Id and upload the .ipa file you created earlier.
---------------- Added 29/09/2016 ----------------
Another way to upload the app is from the organiser press Upload to App Store(blue button on the top right) while the archived build is highlighted. Select your client name from the dropdown in the dialog window press upload and wait until you see green tick
------------------------****-----------------------------
All previous steps assume that an entry for the app you are developing is created in your client's iTunes Connect and their apple developer account.
Finally log in to iTunes connect and do all the necessary processes to upload the app in the store.
Added/Edited on 29/09/2016: On iTunes Connect - in order to create entry for the app and upload it on their behalf, your client should invite you as an admin with your apple id and you have to accept it. Now you can be present on as many accounts as you are invited so very nice of Apple that they have updated this, saving a lot of time and mess. Change accounts from the dropdown in the top right corner when you log in.
I hope that helps.
You will need to have a developer account on the developer account you post to iTunes from. They will have to give you permission to access the account. I don't believe you can upload outside of Xcode anymore.
You've basically got it right. You need to add your client's information into your Xcode and then sign and provision the app as your client.
First, you tell Xcode that you want to add a new account:
Then, you sign in as your client's credentials:
At this point, you may need to download your client's signing certificates and provisioning profiles if Xcode doesn't do it automatically:
Then, just select the signing identity of your client and upload your app through either Xcode or Application Loader.

Certificates and Provisioning Profiles for Push Notifications

I'm having trouble with the process. I have got push notifications working for Development. I have read multiple guides and questions, and for some reason - either their guides are deprecated in iOS 8 or my Xcode is bugged - I am having issues with provisioning profiles.
For the purposes of this question, I have generalized most of the terms for privacy concerns.
I'm currently greeted with the bug - Failed to code sign "App". There is a Fix Issue button, but I made sure I did not click that; I'm afraid it'll only complicate my problems.
I've followed the Parse iOS Notifications Guide and configured my app according to the guide. I've done the following:
Requested a certificateSigningRequest from Keychain Access
Created a new App ID in iTunes Connect, with a new bundle identifier. I made sure I went into my info.plist in my app to change and match the new App ID created in iTunes Connect.
Using the new App ID in iTunes Connect, I created the Production SSL Certificate.
Installed it to my KeyChain Access, and exported it to upload to Parse.
Next, I deal with the Provision profile. Once again, I went in iTunes Connect, created a new provisioning profile, made sure to link the correct bundle ID with it, and downloaded it.
Here comes the part that may have fudged up the process. In the Parse Notifications Guide, they instructed users to double click the downloaded file - in my case, it was called "AdHocDistribution.mobileprovisioning", which will install itself into Xcode.
Download the generated provisioning profile from the next screen by selecting the "Download" button.
Install the profile by double-clicking on the downloaded file.
This should open Xcode's Organizer in the Devices pane. Your new provisioning profile should appear in the Provisioning Profiles section of your Library. Make sure that the status for this profile is "Valid profile". If the profile is invalid, make sure that your developer certificate is installed in your Keychain.
Double clicking the mobileprovisioning file did not lead to any discernable feedback telling me that it was installed.
Finally, I modified the code signing fields in my project and target's build settings to match the one I downloaded.
Finally, I try running the app, and the error popped up. Please help!
Create a provisioning profile of the application using ADHOC from dev account.Download and control drag it to Xcode, Under provisioning profile in your screenshot select that.
Do the same for Target and project and you will be good to go!
P.S. also select the Team as your dev account
Please follow the following steps..
Check all your targets's Code signing Section. Like Project and Test Target.
Check the project "identifier" in all your .Plist file.
Add the account in Xcode Account section, by choose from :
XCode-> Preference - > Account -> click on +sign and add your apple developer account.
Hope it will help you.

How to build an iOS binary without setting an Apple Developer account and team?

I'm using Xcode 6.3.2, and I'd like to let another people to build and create the .ipa files of my projects, but I don't want neither to expose my Apple Developer account information, nor create users for them in my team... is that possible? Either by using Xcode, either by commands line.
Thanks in advance
EDIT: The goal is to prevent those external people from being able to submit apps to the App Store by means of my Apple Developer account and from being able to see the other apps managed in the account.
EDIT2: Does providing the distribution certificate to external people make possible to them to submit binaries to the App Store?
After reading your edits, I think I understand more clearly what you are trying to do. Basically, you will simply need to provide the other members of your team with the following:
The private key used to generate your app store distribution
certificate.
The distribution certificate
The app store distribution
provisioning profile
This will allow those team members to work on, and build the app for the app store. Without your Apple developer ID password, they will not be able to log into iTunes Connect to see the other apps you have. While they will be able to build the app for app store distribution, you (as the only one with the apple ID password) will have to be the one to submit the compiled app to the store.
So basically, your development team will create the apps. When you're ready for release, they can do an "Archive" in Xcode to create the .app that has been signed for the app store (using the provisioning profile and signing identity that you provided them in the three files I mention above. They will zip up the .app and the .dSym files into a .zip and send it to you. You will then log into iTunes Connect and set upt the app to be ready for the new binary, and then use the Application loader to upload the .zip to apple for review. Once you have gotten a successful review, you will again log into iTunes Connect to release the app. So at no point will the developers have access to submit apps or see other apps you have in the store.
Also, the development team will not need the provisioning profile, cert, and key until they need to build for the app store. During the development phase, there is no problem with them using their own developer accounts to build and test the app.
One additional thing to note is that Apple is changing the roles that are available in iTunes connect. You may want to review those new roles to see if some combination of those roles my work for your team setup.
From http://9to5mac.com/2015/06/12/wwdc-itunes-connect-testflight-limits-account-switching/
After several apps are added to an account by its admin, developers
can now assign user roles to individuals on their team— app manager,
developer, or marketer— with each allowing varying access to iTunes
Connect features. App managers, for example, will be able to create
users, assign user roles, change pricing, and submit apps for review.
Marketers will get access to updating store metadata, uploading promo
material, and requesting promo codes. Users assigned the developer
role will be able to upload binaries, and view crash logs and store
metadata.
Apple recently introduced Free-provisional-profile and/or free-developer-certificate support.
But it's limited (see below note).
To utilise that follow below steps suggested by Apple,
In Xcode, add your Apple ID to Accounts preferences, described in Adding Your Apple ID Account in Xcode.
In the project navigator, select the project and your target to
display the project editor.
Click General and choose your name fromthe Team pop-up menu.
Connect the device to your Mac and choose your device from the Scheme toolbar menu.
Below the Team pop-up menu, click Fix Issue.
Xcode creates a free provisioning profile for you and the warning text under the Team pop-up menu disappears.
Click the Run button.
Note that said support is limited, for example, the capability to sell things with "Apple Pay" would not even build with a free-certificate.
Yes, there are several ways to solve your problem.
You can create .ipa file with you provisioning profile and give them the file, they can you use application called "Application Loader", they can use this application to upload the .ipa, this should resign your application with their provisioning profile. I did not try this but it should work.
When you create an archive of you application, it will be listed in "Organizer", go to that location, and give them that .app file alone. Then they can use any third party application(can be downloaded from Mac Appstore) to resign the application with their profile. In this case, you are completely hiding your information. They can even change the application icon, default image.. etc during the resigning process.
When you build your application in release mode an .app file is created, this is unsigned binary. You can search for .app file in your Xcode project itself. Just find the location, and give them that .app file alone. Then they can use any third party application(can be downloaded from Mac Appstore) to resign the application with their profile. In this case, you are completely hiding your information. They can even change the application icon, default image.. etc during the resigning process.
Hope this helps.
No, There is no way to compile a .ipa without a provisioning profile (device compile, not simulator compile). To do this, you would go XCode->{AppTarget}->Build Settings->Code Signing->Code Signing Identity, and set 'Don't code sign".
Trying to compile afterwards will fail with
CodeSign error: Code signing is required for product type
'Application' in SDK...
EDIT: The goal is to prevent those external people from being able to
submit apps to the App Store by means of my Apple Developer account
and from being able to see the other apps managed in the account.
You have two options:
Send them your Source code + XCode Project, and not the library.
Compile the code using "iOS Developer" Code Signing identity, and not "iOS Distribution" identity.
Anything signed with iOS Developer can never be sent to the AppStore.
Anything signed with iOS Distribution can never be run on a device
unless it is downloaded from the AppStore.
They can never see what you have for sale, nor publish anything unless they have your AppleID username and password

Uploading app to client account in app store

This is my first time trying to upload app to app store, so I am completely lost. I have searched all over the web about the issue I am having, but could not find how to fix the issue.
Here is the problem:
I have developed an updated version for the existing iPhone app for client. Original version of app is already in app store for long time. Client wants me to upload new version of the app to their account in app store as "prerelease" for testing. They gave me their store account (admin role) username and password to log in. I added the account in Xcode and configured build settings to their team. But, after building the archive, when I click the "Validate" button and select their team, I am getting an error popup with the message "Your account already has a valid iOS Distribution certificate". I can't post images here, so here is snapshot image of the popup):
http://imgur.com/yLL5K1k
Apple troubleshooting documentation (documentation link here) shows that they should export developer profile and give me to import on my Mac. However, client say they don't have Mac and no Xcode, so they can't do it themselves. Apple documentation is mentioning another option - “Revoke and Request”, but I can't see that option. Also, if "revoke" is performed, will that affect client's application (more than 20 apps in app store)?
I have downloaded all of their certificates and profiles from Member center, imported to keychain, added account to Xcode, configured Xcode, but nothing helped.
Does anyone know what can I do, or ask to client, so that I can upload app to their app store account?
Thank you!
You must have downloaded the Distribution certificate from the account. That alone is not sufficient. You must get the private key from the client or developer who has created the certificate first or uploaded the application.
Log in to developer.apple.com portal, using the required credentials.
Click on "Manage your certificates, App IDs, devices, and provisioning profiles." under Certificates, Identifiers & Profiles
Then click on "Certificates"
On the new page Click on "+" button at right upper corner.
Now on this page select "App Store and Ad Hoc" under Production.
Then follow the instructions related to CSR file given on new page.
Note: Create new certificates with unique names so that you won't download old certificates to your mac, mistakenly.
For more info Distributing iOS Apps With iTunes Connect

Provisioning New Device for Development Xcode

I am a new iOS developer, and although I have been successful in provisioning a device for development in Xcode in the past, I just obtained a new device and am having an awful time getting Xcode to provision it and allow me to test applications on it.
When I connect the new device to Xcode, Xcode does recognize and identify the device correctly, however when I run the application I get the following error message: "A valid provisioning profile for this executable was not found."
According to the Apple documentation, I am supposed to first request a development certificate in Xcode using the following steps:
Choose Window > Organizer > Devices
Select Provisioning Profiles.
Click the Refresh button at the bottom of the window.
Enter your user name and password and click Log in.
After you sign in to your account, a prompt appears, asking whether Xcode should request your development certificate.
I have followed steps 1 - 4 repeatedly and each and every time Xcode crashes before I can get to step 5. I have tried completely closing xcode, detaching device, cleaning project, restarting computer, etc. Is there another way to request a development certificate outside of Xcode?
Ok so then the docs say I should provision the device (granted I assume this step is contingent upon the success of the previous step which I cannot achieve, but I tried it anyway) using the following steps:
Connect your device to your Mac.
Open the Devices organizer
select your iOS device.
Click the “Use for Development” button. The first time you add a device ID to your account, Xcode creates the iOS Team Provisioning Profile using the iOS Wildcard App ID, your development certificate, and the device ID. The iOS Team Provisioning Profile is also installed on your iOS device. If the device was used for development in the past, the “Use for Development” button may not appear. If this happens, click “Add to Portal” at the bottom of the screen instead.
So the "use for development" button does not appear (it appeared the first time I attempted this and hasn't since), so I clicked the "add to portal button". Every single time I do this, Xcode crashes.
I currently have the code signing identity set to iPhone Developer (my name). I have also tried setting it just to iPhone Developer and even Do Not Code Sign. I also went to the iOS dev center and added the device there (not sure if I needed to do that or not).
In any case, can anyone suggest anything I might be missing or any other approach?
While I was sleeping, Apple completely abolished the Portal and created a new and apparently largely broken interface. It's like a kind of evil April Fools joke. Anyway, if you go to https://developer.apple.com/account/ios/device/deviceList.action there's a great big sign telling you that you must "reset your device list before adding any new devices". That sounds like it covers exactly your case. Good luck.
I also went to the iOS dev center and added the device there (not sure if I needed to do that or not).
You need to add the device there.
Steps You need to follow after adding device:
Next re-download the mobile provisioning profile again.
Go to organizer and delete the old mobile provisioning profile you had.
Double click the new mobile provisioning profile you just downloaded and see that it appears on the organizer.
Connect your device and you should see your device's name instead of iOS device.
hope this helps.
If you are looking to bypass the 'Register a Device' portion of the Provisional Profile registration simply upload the 'sample .txt file' they provide you and upload it. You will then be allowed to click 'Next' to finish the registration so this way you do not have to enter a device UID.

Resources