Difference ios ipa export with development or ad hoc profile - ios

I would like to know what is the "real" difference between an IPA exported with a development or an ad hoc profile, in a case I want to beta test an app with some user. Indeed according to what I already read ans test they seems to work exactly the same way :
The provisioning profile is linked to a list of identified devices
The provisioning profile have a 1 year expiration date
The generated IPA can be deployed via OTA, Apple configurator or iTunes
When archive, the app is build in release mode (regarding the scheme management)
The provisioning profile have a developer certificate for development or a distribution certificate for ad hoc : but it's change nothing isn't it ?
Thank you for your help :)

Adhoc Distribution is generally used for testing purpose, you can send build for testing using Adhoc profile, user can download build those having iPhone UDID present in Adhoc provisioning profile.
Development certificate used to take build on you device for testing and parallel for debugging. You can't send build to other people using Development certificate.
App Store Distribution certificate used to upload build on iTunes/App Store.
I have never used development certificate, Just create Adhoc distribution certificate for both testing and App Store uploading and also for debugging purpose.

Related

Can I use an Development certificate along with adhoc distribution provisioning profile to distribute my app to specific user?

I am trying to adhoc distribute my ios app. My admin to our dev portal created a adhoc dist provisioning profile. Can I use any cert(Dev or dist) to code sign my application? or it has to be dist cert? Thanks.
The short answer: you'll need a distribution certificate, with an ad-hoc provisioning profile that contains the target device's UDID. You can configure this on the dev portal.
Development certificates are purely for device development at your own machine. It does give you access to a limited number of devices to build your app on, but it isn't ideal for beta testing an app on.
Distribution certs and ad-hoc profiles are most commonly used with services like Fabric to beta test your app. You may also want to look into TestFlight to help distribute for beta testing.
Good luck!

What is difference between Xcode Ad Hoc and IOS Team Provisionig Profile

I am not sure what is the difference between these two XC Ad Hoc and iOS Team Provisionig Profile. These two are generated by Xcode.
Are these two same?
OR
If different what's difference between them and when to use which one?
As far as I understand and searched the forum what I got is this
Development profile allows you to test your apps on your physical devices
App Store Distribution profile allows you to sign your apps for App Store distribution
Ad Hoc Distribution profile allows you to sign your apps for Ad Hoc distribution
Mainly AdHoc distribution allows you to install the generated IPA on
100 devices which you can distribute for testing.This 100 devices
should be added in your developer account.
AdHoc distribution is used for testing production push notifications
in the app. Before releasing the app to appstore, if you want test
your production push notifications you need to generate ipa and test
the notifications.
Ad Hoc Distribution Profile: Using this profile you can allow 100 devices to install your app for testing purpose. App signed using this profile can be install using itunes. App must have same identifier as mentioned in Ad Hoc provision profile. ie. com.yourName.appName
iOS Development Provision Profile: You can install your app directly from XCode to test on device. It is not compulsory to have matching identifier for app and provision profile if provision profile is signed with wild card. ie. com.yourName.*

iOS: Is a Distribution build supposed to work on my Developer device?

I am confused with profiles and certificates for the build I am trying to put on the Appstore.
In developer.apple.com/ I have properly created both a developer and distribution certificate. they are both linked to the single app I have created.
I have registered my device (iphone)
I also have properly created 1 development provisioning profile and 1 distribution provisioning profile.
When I build with dev certificate + dev provisioning profile: app works fine on my device
But I know the build needs a distribution certif and provisioning profile in order to get approved on the appstore.
However when I build with distribution certificate + distribution provisioning profile, the build is succesful, but I can't launch the app on my iphone, other iphone (with http://www.diawi.com/ or iTunes). It immediately crashes with the infamous error popup: "unable to download. "XXX" could not be installed at this time".
When I look at the device's log from Xcode, it clearly states the crash comes from a profile issue.
Is the distribution build supposed to work on my iPhone?
You can check you Beta release build to your developer device using 'Apple Ad Hoc Distribution profile/certificat'. Here are Apple Dev link Beta Testing Your iOS App
No. A distribution build will not just be installable on your device. You are meant to submit it to iTunes Connect from Xcode, where you build it from an archive, or from Application Launcher where you would submit it as an IPA.
you should have created adhoc distributed provisioning profile and add your device to that profile.
But you need iTunes Connect to submit the app to App Store. This time you can create provisioning profile for app store.
Advantages of iTunesConnect.
1. You need not to add new device to the provisioning profile every
time you want to test the app in new device.
2. You can add as many as new test users to the app and can mark them as internal and external users.
3. You can upload as many builds as you want and test those builds.

App store provisioning profile

I created one distribution profile for app store submission. Can i test my application in device with the same profile.
Or otherwise i need to create some other profile with ad hoc distribution?
You can not use an app store provisioning profile to test on a device. You can use an ad hoc profile, or a development profile.
Both ad hoc and development profiles require you to specify your device id.
The difference between an ad hoc and a development profile, is that a development profile can be used to debug. That is, you can use Xcode to build and install the app right on your device, and then step through code as the app is running to see values variables hold etc.
An ad hoc profile allows you to build an .IPA file and share that with beta testers (assuming of course you included their device id in the profile, or you have an Enterprise account/profile). They can install the .IPA file via iTunes (so they don't have to be a developer, or on Mac for that matter).
Yes, you have need to create ad hoc distribution profile for test. You cann't test with distribution profile(app store submission). read this About Store Provisioning Profiles and Creating Store Provisioning Profiles
Sorry!! you can't.
App Store > create a distribution provisioning profile to submit to the App Store
Ad Hoc > create a distribution provisioning profile to install a limited number of registered devices.
So you need to create a new Ad Hoc type distribution profile to install your device.
The answer to your question is 'NO'. You can not use 'store distribution provisioning profile' for testing your app on a device. It is intended to be used only for submitting your app to App Store.
To test your app before you submit it to App Store, you need to create separate 'ad-hoc distribution provisioning profile'. This will help you to beta test your app before submission as refered here..
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html#//apple_ref/doc/uid/TP40012582-CH8-SW1

iOS: What are DISTRIBUTION provisioning profiles used for?

This might have been asked lots of times, but still I couldn't find info on why are they needed. I use DEVELOPER prov profiles to test apps on my device, that makes sense.
The Provisioning Portal explains prov profiles like this:
A Provisioning Profile is a collection of digital assets that uniquely ties
developers and devices to an authorized iOS Development Team and enables
a device to be used for testing.
By this logic they are only needed for testing, eg not for distribution. Do we need one to deploy the app on the AppStore?
Absolutely yes. The distribution profile is used for submission to the App Store. It does not have the 100 device limit that the development profiles have.
From the Tools Workflow Guide:
When you’re ready to share your app for user testing or for general distribution through the
App Store, you need to create an archive of the app using a distribution provisioning
profile and send it to app testers or submit it to iTunes Connect. This chapter shows
how to perform these tasks.
The distribution profile prevents the attackers from submitting a modified version of your app to the store - only you, who hold the private key of the distribution certificate, can submit and update your app.
Once your app is submitted, your embedded.mobileprovision and your binary will be checked and compared to make sure that you are the legitimate author. embedded.mobileprovision file is then discard and the app is signed again by Apple using their own certificate (which is by default accepted by all iDevices), so that all iDevices can run it.
When an iDevice downloads the app, the executable binary is then encrypted with an encryption key associated that device. At run time, only that device can decrypt the executable binary and run it.
There are two types of distibution profiles, the first one is to submit your app to the appstore and the other one (Ad-Hoc) is necessary if you can´t connect a device to your mac(developer profile). Then you can share your app wit the Ad-Hoc profile to someone else e.g. via mail.
Distribution Provisioning Profile
Distribution Provisioning Profile is used by Apple to publish an application to App Store. When Apple approve the application it is signed by Apple and became public.
Distribution Provisioning Profile contains:
Application ID - application which are going to run
Distribution certificate - who can debug the app
[Development Provisioning Profile]
[Certificate]

Resources