How distributed app is verified as valid in user's iPhone - iphone

An app can be installed in a device if it is code signed. While installing the code-signed app in a device the app id, certificate and device id is matched against the corresponding details embedded in the provisioning profile installed in the device. If it is matched then app is installed successfully.
My question is that:
During distribution we will not know and we will not mention the user's device id in distribution profile. Then, how verification is done during installation of distributed app?

When any application is under development stage, we need to add device ID in development profile. In case of distribution, there is nothing like adding device. Anyone having iOS device, can download your application from App Store. there is nothing like verification in i. You just need to enter deployment target for your application. So, if you have kept it 5.0, then anyone having iOS 5.0 and later, can install your application.
Let me know if still you have any doubts.

Related

iOS Provisioning Profile not installing on one particular device

I recently have distributed an app for testing, and the test team are having a problem installing the app, more specifically the provisioning profile associated with the app.
They are using an iPhone 4 (iOS 5.1.1) and are getting "Could not install the provisioning profile due to an unknown error"
I am used to seeing this when a UDID is not registered against the profile which is trying to be installed, but they are adamant that they have supplied the correct UDID. In terms of the profile, both looking at provisioning on the iOS Dev account, and opening in a text editor confirms that the UDID that has been supplied is definitely present.
My question is, are there any known issues (other than wrong UDID supplied) which could cause this to occur on a device, even if that device is authorised to install that particular provisioning profile?
Thanks
This won't answer your question because your problematic device is iOS-5.1, but it may help lots of other people:
Another possible issue since iOS7 is where did you find UDID. As Apple says:
In iOS 7, apps that are already on the store or on users’ devices that call this removed API will no longer be returned the UDID. Instead, -[UIDevice uniqueIdentifier] will return a 40-character string starting with FFFFFFFF, followed by the hex value of -[UIDevice identifierForVendor].
Consequetly, check the UDID your client/collaborator sends to you: if it begins with FFFFFFFF, thats a wrong one.
The only & unique method to get UDID under iOS7 is to plug your device to a computer, launch iTunes (or Xcode) and copy the displayed UDID.
Looks like the UDID which is generated programmatically gives a random alphanumeric code from iOS 7. So to make sure you are using the right one, connect it to iTunes and then copy the UDID.
There may be few reasons behind that because information is not enough so i can just guess -
If you're getting any boot strap error in console then delete app from device then switched OFF your device then ON and try again.
May be in your device there is already an app having same profile so your app would overwrite on previous one and new app would not be install.
Last It might be provisioning profile issue. Make it again.

how to run applications using device id in iphone

Hi friends I tried this but could not find clear solution .
I searched on some links on Google but didn't get clear idea how to do that.
My client is on my head he is asking to install app using device id only.
Can anyone suggest me how to do this?
When we build an application for device it needs certificate and provisioning profile. If client wants that the application is to be installed on the specified devices and not on all the devices then you will need to use Ad-Hoc distribution profile.
To use this, first you will need to add particular device, on which you wish to run application, on provisioning portal.
After that you will have to download new provisioning profile, which will have entry for that device.
Now you will simply sign your application with this profile.
Using this you will be able to install application only on those devices which are added to this profile. You can add upto 100 devices in this profile.
Here is a link that compares between different programms
https://developer.apple.com/programs/start/ios/
Thanks,

Questions about Ad Hoc distribution

I am trying to set an Ad Hoc distribution in order to test an iPhone app with some remote users. And I haven't found any good and clear tutorial up to now. By reading bits and pieces on Apple documentation and others I am now able to put the app on my iPod device doing as much as I can "as if I was remote user"; meaning I can put my app on the device without going through XCode. But when I send the xxx.mobileprovision an the app file to a remote user, things go wrong. The user gets a message saying that there is no proper signing authority.
As far as I know I included myself and the other users in the list of device UDIDs.
One thing unclear to me related to this issue is :
In the iOS Provisioning Portal section Certificates I can see one tab "Development" and another one "Distribution", I am not sure of what the difference is. I have one item in each tab, but I see no "Add" button to add more items and try something different. Is one of those two tabs important for my problem above?
Thanks.
The tabs are very important.
With certificates, Development is the Key Chain cert that grants you permission to build in Xcode directly to an iOS device connected by cable. Distribution is the Key Chain cert that grants you permission to build in Xcode app that may be installed onto an iOS device remotely.
Development is the mobile provisioning profile that has the list of registered an iOS devices you may directly build an app onto connected by cable.
Distribution is the mobile provisioning profile that has the list of registered an iOS devices you may send an app to someone else and have them install it on a registered iOS device remotely without using Xcode.
You want to do an Archive which will require a Distribution mobile provisioning profile. I might add that if you are sending an mobile provisioning profile in an email, you will likely want to Zip it with the .ipa since the profile can often get corrupted with in certain email clients.
Here's a link to another question that has very thorough step-by-step instructions for creating ad-hoc distribution profiles: how do you beta test an iPhone app. The instructions have changed slightly with newer Xcode versions, but this is still the best walkthrough I could find.

How To Update App From Different Xcode Project and Computer

I have a 2.0 version of an iPhone app that I want to submit an update for. The first version was built by someone else on their computer. I started from scratch and built a 2.0 version and am ready to submit it as an update. I have access to their iOS provisioning profile and everything but not sure exactly what provisioning stuff I need to download. And do I have to use their old App ID and Bundle ID etC?
If you want to update an existing app in the iOS App store, it needs to have the exact same bundle ID, a higher version number, and be submitted by the same enrolled iOS Developer account to iTunes Connect. You can (revoke if necessary and) create a new Distribution certificate and profiles in the iOS Developer Portal, if you don't have the old ones (and their associated private key), and use those for building the update. The provisioning profile you use needs to be suitable for the app's bundle ID (either a matching or wildcard App ID).

Do I need to make an Ad Hoc Provisioning Profile to debug my app on my iPhone?

I think I'm just cloudy on how debugging works on a real device - is that how to go about it? I've been reading through Apple's docs on creating provisioning profiles for distribution, but I'm not finding any information for simply debugging my app, which is running on my device, through Xcode. Can someone point me in the right direction?
Edit (2/19/09):
I'm getting conflicting answers on whether or not I need to create an ad-hoc provisioning profile to debug my app. If I don't need to create an ad-hoc provisioning profile, what else do I have to do to debug my app, other than having my development provisioning profile and certificate for myself?
Edit (2/20/09):
This link, iPhone Development Guide: Preparing Devices for Development, seems to say that you do need a development provisioning profile for debugging on a device. In my last edit, I mentioned that I was getting conflicting answers on whether or not I need to create an ad-hoc provisioning profile. The answers are not conflicting, I just didn't understand the difference between an ad-hoc provisioning profile and a development provisioning profile.
Any time you're writing software to be installed on an iPhone, you need two things: a key and a provisioning profile. The key identifies the person who developed the application; it stays on your computer and is used to sign the apps you build. The profile identifies which devices are allowed to run applications signed by a given key; it needs to be installed onto the device.
Distribution keys are basically one per company, and are only meant to be used when you are building a version of an app that's intended to be distributed outside your development team. (App Store builds must be signed with a distribution key.) Development keys are intended to be one per developer, but are only meant to be used when actively developing an app.
(If you are an individual developer, of course, you have only one developer key and one distribution key. On my machine, I've set up Keychain to require a password for the distribution key, so even if somebody steals my laptop they can't release an update to one of my apps that compromises user security. The developer key, which can only install software onto my personal phone, is not passworded.)
When you're testing on your own personal device and installing through Xcode, you need a development provisioning profile and a development key. This development profile should be installed into Xcode, which will then install it onto your phone.
When you're distributing to a small number of others (for example, for beta testing, or if you wrote an app that's specialized for a specific customer), you need an ad-hoc profile and a distribution key. You'll need to send the ad-hoc profile to the user along with the app. The user can then drop both the profile and app into iTunes and sync their phone to install.
When you're distributing through the App Store, you need an App Store profile and a distribution key. Builds made in this way cannot be run on any device you control, but Apple's submission tools require them to be built using this profile.
So to answer your question: You need to provision your device, but it has to be a development provisioning profile, not an ad-hoc profile.
No, you don't need an Ad Hoc provisioning profile to debug an app, you only need a development provisioning profile and certificate for yourself on your device.
You need to provision the device, yes. IIRC you need to use Apple's online tool, and then provision it using Xcode, after which you will be able to debug it on the device.
See the first post on this blog for more.