Questions about Ad Hoc distribution - iphone

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.

Related

How to disable the iPhone app on a testing device from apple developer member account

How to disable an iPhone app running on a testing device without deleting it, for which the ipa file has been generated using a provisioning profile for the testing device. Assume I have access to the paid member account.
If I make the profile invalid, Does the app still works on the device ?
I am naive to the iPhone development. I am sorry If my question is improper one.
I guess that when you make a IPA with a profile from the provisioning center, it comes embeded within the IPA. So, theoretically, if you remove a device from the provisioning center, the change will not reflect on previously installed devices.
Just a guess.
If that's right, the only way I see to do it dynamically, is if you make by yourself an auth system for the app testers, requiring a password or whatever that will be validated online for the app be able to run.
in apple developer provisioning center, when you make a profile, it asks you to select devices for that profile from your list. app will run on listed devices only, you can remove/add the devices by modifying that profile and then downloading profile and making a IPA with that profile.
I think what you are asking is is it possible to remotely disable / wipe an app that you have previously sent to a tester.
I believe that is impossible, because assuming the tester managed to make it run at least one, he/she already has the provisioning profile and the app to match that provisioning profile. Therefore unless the tester changes that setup, there is nothing you can do to revoke the access.
On the other hand, I believe remote wipe is possible under the enterprise developer programme though.

Installing app with adhoc provisioning profile to other iphone through itunes

I was able to go through all the horrible process of builing the app for ad-hoc distribution.
But I can't install it in an iphone from iTunes. It shows an error message after installing the app, then another pop up appears that says "Some items bought from the iphone, including "Blendr" couldnt be transfered to your iTunes Library because you have no autorization to use them in this computer.
It also gives the option of allowing this computer to use the items bought in the iTunes Store by selecting Store > Autorize, but the owner of the phone doesnt know his login/pass and also I need to make this proccess as fast as possible, since I will be installing this app to many phones, is there a way that the iphone doesnt sync with my iTunes and just installs the app?
Thanks
EDIT:
I figure out that iPhone was jailbreaked, so that's the reason of that error message. But I tried with an iPhone 4 not jailbreaked & iOS 5(my app is developed using iOS 4) and I couldn't drop the app in it, no error message whatsoever..
Any ideas?
You may want to check out Test Flight which is a free service that lets you manage builds and distribute them to your users for testing. It uses some funky provisioning services in iOS that allows their app to be installed and then to provision the user's device for your app. It's pretty cool and really simplifies the whole Ad Hoc distribution process.
Now, truth be told, I've only played with this service a bit, and it was about a year ago. My sense is that to use it effectively, your users have to have some savvy about what is going on to be successful with it. I have not looked too deeply into it lately, but they are still in business, and it's been over a year since I tried it. I would check it out! I plan to do just that for my next project.
EDIT:
As far as using the "traditional" Ad Hoc methods... I have always distributed Ad Hoc builds (.ipa files) along with the Ad Hoc distribution profile used to build the ipa file to users via e-mail. Users need both files. And I have always instructed users to save the files to their desktop, launch iTunes, connect their device, drag/drop the saved files onto their iTunes Library, then sync. It should be that simple.
The other errors you're seeing seem unrelated to installing an Ad Hoc build on an iPhone that has been provisioned to use it. iTunes seems to do a lot of stuff automatically around making sure it has everything downloaded from the cloud that you bought, that it's all on the devices it's supposed to be on, etc. That is all ancillary to the Ad Hoc process, except that you do have to sync your device to get the Ad Hoc build installed, so there is no avoiding having iTunes do all it's housekeeping.
Perhaps the thing to do is to resolve all those other iTunes issues before trying to install any Ad Hoc software. That is to say, get things cleaned up so that iTunes is happy with the iPhone in question when it is connected, and is able to sync it without errors. (I know; easy for me to say. But I think you have resolve those issues first.)
Instead of using a Distribution AdHoc you can create a Developer Certificate adding all the phones you need to install it to, you add the new certificate to all phones and you will be able to install it directly from XCode. Hit Run and Enjoy!

How do i give my un-released iPhone app to people who aren't near me to test?

This isn't a coding question, but is to to do with beta testing my app and so I think it's relevant for here.
I want to give my app to people to try, such as online friends and my parents, neither of whom live anywhere near me. Am i able to provision an iPod Touch or iPhone for testing my app, and put the app onto that iPod or iPhone without doing it directly from my computer?
Yes, you need to generate an Ad-Hoc build. You get the beta testers to send you the UDID for their phones, then build an Ad-Hoc build targeting those devices and email it to them. They install it by dragging it into iTunes and then syncing their phone.
In reality it can be a bit of a trial the first time you generate an Ad-Hoc build. Apple's docs cover all the facts but lack a simple step-by-step guide. I'd strongly suggest you check out TestFlight - it's free to use and it makes the whole process much easier.
(If you're feeling really adventurous you could try out Anticipation, a simple Ad Hoc distribution tool I wrote that runs on Google App Engine. It's free and open source, so help yourself!)
You are looking for Ad Hoc Distribution in Provisioning Portal. Basically, you will need to create an Ad Hoc Distribution Profile that has the Unique Device ID's of the devices your friends will use to test.
In Xcode, you will build your app with the above-mentioned distribution file using Build and Archive. When You open Organizer and click on the archived app, you will choose Share -> Email. This will open your mail client and attach the .ipa and the correct distribution file for your users to drop onto iTunes and Sync.
You want to look in to Ad Hoc Distribution. You'll create an Ad Hoc Distribution Provisioning Profile on the Provisioning Portal, then Build & Archive, then "Share" the archive signed with your Ad Hoc profile.
Check out this article, it walks you through it and shows a nice way to distribute it online. Note that you have to repeat the process every time you make a change to your app or add a new device to the profile.
You have to create an ad-hoc version of your app.
You need to get the UUID of the users devices. Erica Sadun created an app that helps you doing this. It gets the uuid on the device and emails it to you. Those UUID goes into a special provisioning profile you create in the provisioning center on dev.apple.
For ad hoc deployment I use Hockey Framework. Some php files you put on your webserver with the ad hoc version and the provisioning profile.
Beta testers can then install the app by visiting the website with their devices.

Code Sign Error When Building iPhone Application

I am new to iPhone development. I just registered with Apple for the iPhone Developer Program. When I try to build, I am receiving an error:
Code Sign error: a valid provisioning profile matching the application’s identifier could not be found
I'm not sure what is wrong. I tried browsing the Internet but I get confused. Can anyone help me with what I should do?
At first it seems a complex process, but it's pretty straightforward when you've been through it a few times.
In a nutshell the process is this:
(I'm assuming you've set up your iPhone/iPod touch as a test device)
Via the iPhone Developer Portal
Create an App ID
(give your application a name, this is just for reference on the website and nothing to do with your own build of your application)
enter a string to identify it, like com.yourcompany.appname
(this is important and should be the same as in your .plist file inside Xcode)
Click and Save this
Go to Provisioning
There are 2 provisioning profiles you'll need
a) development - so you can install your application on a test device (i.e. your iPhone / iPod touch)
b) distribution - if you want to sell the application via the App Store
You can create the profiles by selecting your App ID, created in the previous step, from the drop down list and clicking Save
In a few moments (usually, though it can be longer) the certificate is available for download. Download this to your Mac and drop it onto the Xcode icon. Sometimes the development profile doesn't work for me like this and I drop it directly into the Organiser window in Xcode that shows my connected device.
Besides, if you are in a team account, team admin need to edit Development Provisioning Profiles, and add modify your certificates privilege.
In Xcode inside 'Edit Project Settings' you can select the certificate you wish to code sign with. Usually for debug I sign with the development certificate. Follow the instructions on the apple site and clone the release profile and call it something like release and sign this with your distribution profile. (You won't be able to load the app onto your phone with the distribution profile selected)
Make sure you select the target device as Device and not Simulator when building for the App Store!
Hope that helps, it's from memory so apologies if I've skipped some small steps.
xcode top left corner make sure you're running as "similator" "iphone"
Did you set up an iPhone provisioning profile for either development, ad hoc distribution, or app store distribution?
If not go to the iPhone developer program portal, which is linked from the developer.apple.com/iphone. Apple has provided a great series of video tutorials.
Just make sure you install the certificates or the profile won't be selectable in the project configuration. When you download the certificates double-click on them to install.
Possibly more use for others seeing this issue on a previously configured dev environment.
This error is also shown if your provisioning profile has expired, in this case you can go through the steps in Neosionnach's answer or you can go to Organizer, click on the profile and click Refresh.
This was the winner for me when I had this issue.
As of July 2012, you can go here:
https://developer.apple.com/ios/manage/overview/index.action
Then launch the "Development Provisioning Assistant." It walks through all the steps outlined by FiddleMeRagged.
You can use this process to create a Wildcard ID, if you're just looking to test your app on your iOS device and don't need to deploy to the App Store right away.

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.