Run xcode project with distribution profile on it - ios

I have created an iOS application, and wanted to submit it to the App Store.
I saw a tutorial on how to do that, and understood that I need to create a Distribution profile and replace it with the Development profile. So I did that but before sending it to the App Store. I want to check it last with that profile on it (the distribution profile).
Can I run Xcode project when I add a distribution profile?
because when I tried running it on a real device, an error popped up: "the provisioning profile "XXXXX" was not found".
So i went to the Devices tab and tried adding the file of the provisioning profile, and it didn't allow me to.
What should I do?

You can't use distribution profile to run the app on your device directly from your device.
Now Apple provides beta testing of apps using iTunes Connect. So you can opt for that option as an alternative.
Refer Beta Testing Your iOS App for more details

Yes, you can do by applying small tweak.
Open you Xcode project
click on your target.
choose edit scheme from list.
choose Run tab from left.
select info tab from top.
select Build Configuration and choose release from drop-down list.
Now delete your existing app, from device if exist.
And run the app from Xcode.
After completion of compiling for app, it would show some error dialog and will stop execution, ignore it.
Now app is installed on your device with distribution profile.
Re-run the app.
Cheers!

Related

Xcode 8 asks for a device to be registered to create provisioning profile

I am trying to publish an app for testing, without having to connect a device in my mac.
I have created a developer account, created an app in itunes, generated bundle id, signed into xcode with the developer account, generated a distributor certificate.
When I tried to archive the app, I got the error "conflict provisioning setting. app is automatically signed for development ..."
I read in this post and followed the tip of unchecking and rechecking the option "Automatically manage signing". After re-choosing my team, I get the error "There are no devices registered in your account on the developer website. Plug in and select a device to have Xcode register it".
The goal all along was that I wouldn't need an ios device, because I intended to immediately publish the application and invite people to test it via testflight. Is it not possible to do it like this? Am I missing something.
I have read lots of documentation, but being a first timer in this, everything seems confusing.
Edit: I created a provisioning profile as distributor. Even after creating and installing the distributor profile (it now appears also in xcode at Account -> provisioning profiles), I still get that same error. I also noticed that in signing, The signing certificate is iOS Developer. I am sure
I fixed it by plugging in my iPhone and going to the Product menu > Destination > iPhone (my device).
Then after clicking Try Again on this properties page the warnings went away.
Source
The solution (though I would welcome more elaborate, insightful explanations):
#General -> Signing, disable the option "Automatically manage signing"
#General -> Signing and certificates choose your team
Though in my case that was not the issue, I would recommend making sure that in the device list, you choose Generic iOS device in your target devices.
This really sucked to figure out.
What you do is add a distribution profile in https://developer.apple.com/account/resources/profiles/add. Don't choose development! Don't let the Xcode Automatically manage signing!!
Then, you download the provision.
Then, in the Signing & Capabilities -> Signing Section of the project.xcodeproj file, turn off Automatcially manage signing, choose import and import the file you just downloaded.
Then, in the top, you choose Any iOS Device (arm64, armv7) and then you go Product -> Archive.
What happened to me was that I was about to run my app on a physical device for the first time and I didn't have a Team. So I created it in the process before connecting my phone with the USB cable. After I created the team a message like the listed above appeared. I did some research on internet but nothing found.
So here's what I did: I connected my phone, did all the trusted process, then restarted Xcode, and it worked. I am not sure what happened, but it was some of my first experiences using Xcode. It could sounds silly but it helped me. Hope to you too.
If you do not wish to register a device follow this advice:
https://stackoverflow.com/a/44157307/499581
* In short use "Generic" as the device while archiving.
If you do wish to register a device then the solution to:
"There are no devices registered in your account on the developer
website. Plug in and select a device to have Xcode register it".
Is to physically plug-in your device (an actual iPhone, or iPad) so that Xcode can register it for development use (note: this will not affect the normal everyday use of the device). After the device is registered it can then be used for development testing, load provisioning profiles onto it, etc.
↳ Disabling and Enabling Devices Using Your Developer Account
For those who are trying to develop without a mac computer using MacInCloud don't follow the standard advice out there. Its will lead you down a hole. I have wasted hours of my time.
The reason it say something about "a device to be registered to create provisioning profile" is that you need to provision an iOS device that you can test on before you can get it signed. If you are using MacInCloud you probably can't physically connect an iPhone or iPad to the MacInCloud and therefore it can't automatically provision devices for you.
Before you get to far into this you will need to get your iPhone/iPad UDID. Which I was able to do with https://get.udid.io/ on my iPhone, but it didn't work on my iPad. Instead, with the iPad I had to download iTunes from the Windows store and connect my iPad. Then click on the little gray square in the menu that's inline with Library tab.
image of itunes
Then when it pops up with your device info (mine didn't come up with my info at first, I had to sync my device). You will see your SN. Click on your SN and it will change to your UDID. Once you have your UDID you are ready to create a provisioning profile. What is confusing is this isn't done in the appstoreconnect section of your account online. Its done in your developer account: https://developer.apple.com/account
developer.apple.com account screen shot
When you go there you will want to click: Certificates, Ids & Profiles
Here you will need to add your devices and then with auto signing checked in Xcode that made the problem go away. NOTE: I originally tried to create a profile, download it, and import into Xcode under the Provisioning Profile dropdown in Signing & Capabilities. As described in another answer here, but that proved more problematic and wasn't necessary.
Then you can chose Any iOS Device from emulator device drop down then go to Product > Archive > Distribute App and create a certificate to place it on the app store (TestFlight).
you can also plug an iphone, run the app the app on your iphone as the target, it will ask you to register the device and then the certificates will be generated
Have you paid the $99/year developer fee? TestFlight is only available for paid developers. I would highly recommend plugging in an iOS device, though. It's more fun and rewarding testing that way.

How to run iOS application in real device through terminal without a paid apple developer account?

First this not duplicate of Test iOS app on device without apple developer program or jailbreak
I know it is possible to run app on device using Xcode 7 and free AppleId but i want to achieve this using terminal only Or in other words, Is there any way to generate provisioning profile & certificate using unpaid Apple Id through terminal.
If i will follow mentioned steps then my app installed and run successfully in device but i want to generate IPA using this free certificate and provisioning profile using terminal only.
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 from the 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. Xcode installs the app on the device before launching the app.
I am working on some automation task and want to generate and install this signed iPA using unpaid Apple Id through Terminal.
I do not believe this is possible. The challenge is not just extracting the provisioning profile that is created in Xcode. That will not work because Xcode also manages the devices in the profile. So if your devices change, you need Xcode to register the new device and add it to the profile on Apple's servers, before re-downloading it. It also manages the bundle ID.
In theory, if you were to set up the app and all devices in Xcode before grabbing the provisioning profile from ~/Library/MobileDevice/Provisioning Profiles, maybe it would work.
If you can successfully get the profile. maybe you can use these instructions to build and install on the device as long as it was set up ahead of time: install application in iphone device through command line

iOS: Bundle format unrecognized, invalid, or unsuitable

When I try to run an iOS app on real devices it give me the following error, but it works on simulator, also I uploaded test build on TestFlight successfully, I tried to use another bundle identifier but no luck.
The project is built using Swift and using CocoaPods to include Alamofire and other libraries.
Without having all the details it sounds like you need to update your Provisioning Profile for Distribution or Development.
You will first need to go to the Apple Developer portal and login in to your account. Then select "Certificates, Identifiers and Profiles", followed by "Devices". Add your iPhone's name and UDID to the list if it is not there already.
After your device is registered to your account you will need to update the Distribution Profile (to allow devices to open your app through the beta distribution channel of Test Flight) as well as your Development provision profile to allow team members to build and run the app through xcode on their device instead of the simulator.
First select Distribution and click on the preexisting Distribution Profile for your application. Select the edit option and make sure the check mark next to your device is selected. Then generate a new Distribution profile. This will cause a download to automatically occur in your browser window. Once its complete you should click the download and this will automatically add it to xcode.
Now create a new provisioning profile for your application. Add the appropriate App Bundle Id and select your device from the list. Generate the new profile and a download will again be triggered in the browser window. Once the download is complete again click the download which will automatically add the profile to xcode.
Your application should now be able to run on your device when building and running through xcode as well as when it is downloaded from your beta distribution channel.

Trouble Running App on Device

I'm trying to run my app on a new device through Xcode 7 but everytime I click to run I received this error: "No matching provisioning profiles found: None of the valid provisioning profiles allowed the specified capabilities: Features: push and inApp purchase". I don't know what this means. I've never seen a message like this before when running apps on another device with Xcode 7. Does anyone how I can fix this issue so I can run my app?
If you haven't added your apple developer id to Xcode, I'd suggest doing this now. once you've done this and in the project navigator, if you highlight the project, then on the middle-most pane, go to the Capabilities Tab and make sure In App Purchase is enabled. If not, enable it. It should pop up asking which developer ID to use, or ask you to add one.
Choose the ID in question, then it'll add the entitlements to the app.
Whats going on here is that the provisioning profile which your app is using, hasn't been enabled in terms of IAP's.
There's more to read about that here:
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html

How to test Cordova/ionic app on iOS device?

I'm building an app which now runs fine in the iOS emulator, so I now want to test the app on an iOS device. I registered with the Apple Developer Program and ran ionic run ios, which ended with the following message:
Code Sign error: No provisioning profiles found: No non–expired provisioning profiles were found.
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.2'
So I opened XCode and went to Preferences > Accounts and added my Apple ID. I then clicked View Details... and then the refresh icon so it fetched two Signing Identities. The box below which should display the Provisioning Profiles is empty though:
I then read this article on the Apple Developer site which explains that I need to:
Set a bundle ID
Assign my app to a team
Create the Team Provisioning Profile
The bundle ID should supposedly be set in XCode. Because I am under the assumption that the bundle ID is set in my ionic config.xml file I'm unsure of how to proceed though.
Does anybody know how I can (preferably very easily) test my app on iOS devices? All tips are welcome!
What I did was to create a new project into Xcode, as soon it is created is showing the General tab, under Identity is showing a message saying that can not find the proper certified, something like that, and there is a button "Fix..."
just click it, the passport is requested and you are done.
I just try again and works. Xcode fixed my provisioning profiles sync for me.
Try this
Select Preferences from Xcode
Go to accounts and select agent name
Select view details to check status of your profiles
Select any profile and click refresh on corner below to update profiles.
This should update your profile with expiration dates
Go to project General and downgrade to 8.1.

Resources