Team Agents the only ones that can build Ad Hoc? - iphone

First a little background. I am building a mobile app for a client, this client currently owns the developer account they wish to distribute the application from. Previously, I had been using my own developer account to build ad hoc to send milestone builds to the client. We are now getting close to ship and I have begun transferring the build to using the client's credentials.
Honestly, this is the first time I've worked on an app that was in my own developer account, so even setting up the dev cert/provisioning took some trouble shooting. Specifically, I couldn't use their existing developer certificate, but one that I created on my machine, uploaded and they approved. That's fine, I'm building locally to my device now.
However, (and here's my question) I ran into problems setting it up for them to do ad hoc distributions. Namely, installing their ad hoc certificate doesn't seem to work. My assumption is that it is because it wasn't build on my machine. However, there is no facility as a non-team agent to create my own Ad Hoc certificate.
Is it the case that only team agents can do Ad Hoc (and I'm assuming submission builds) from their machine? Is there no way that I as a Team Member can do an ad hoc build from my development machine?

When you generate a signing request in Keychain Utility (the first step of generating an Ad Hoc profile), it simultaneous generates a private key and saves it to your keychain. You can only build against the Ad Hoc provisioning profile if you have that private key in the Keychain on your Mac.
So your solutions are
Get them to export their private key from the keychain and send it to you. You then import it into your keychain. They should also send you the Ad Hoc mobileprovisioning file they created. You drag and drop this onto xcode.
Generate the signing request on your machine, and send it to them to generate a new Ad Hoc profile which will then only work on your Mac (though again, you could send them the private key).
The final option would be to send the source code to them to compile the Ad Hoc builds.

The Provisioning Portal Distribution How-To explicitly states:
Only Team Agents are authorized to
prepare and submit applications for
distribution.
Team Agents are also the only ones authorized to create an Ad-Hoc distribution profile.
However, once the distribution profile is created, the Team Agent should be able to download it and hand it off to you for creating Ad-Hoc distribution builds.

Related

Using sandbox APNS on AdHoc Distribution Builds for iOS

I've been reading a bunch of Apple's docs, as well as many other SO questions, but haven't found the answer to this particular question.
I have an existing workflow in place for generating AdHoc Distribution builds for QA members and beta testers. Now that I've added support for push notifications, I'd like those notification paths to be able to be tested as well.
I'm under the impression that Developer builds, signed with a Development provisioning profile, generate tokens that for the sandbox/development APNS environment, and Distribution builds, signed with a Distribution provisioning profile (whether that be destined for AdHoc Distribution OR AppStore Distribution), generate tokens for the production APNS environment. I believe this can be confirmed by opening the different .mobileprovision files, and examining the aps-environment key.
I'd like to know if there's a way to have my AdHoc Distribution builds use the sandbox APNS environment, rather than the production APNS environment.
If I really wanted QA and beta testers to use sandbox APNS, would I have to somehow find a way to allow them to run development builds, rather than distribution builds?
Or are my assumptions about the way things work way off base? (referenced this post and this post)
I did found some mention to AdHoc in the context of APNS environments :
Note: There is a separate persistent connection to the push service
for each environment. The operating system establishes a persistent
connection to the sandbox environment for development builds; ad hoc
and distribution builds connect to the production environment.
It's taken from Technical Note TN2265.
I guess this note confirms that you can't use the sandbox env in AdHoc distribution.
Apple uses a different server for:
Apps signed with a Development profile
All other profiles (AdHoc, InHouse and AppStore). These are going via a Live Server.

iPhone ad hoc distribution with team agents certificate

I'm struggling with a problem that's very similar to this StackOverflow issue: iPhone ad hoc distribution as a team admin with team agent's certificate?. Unfortunately, the answer provided there didn't quite work for me.
Here's the overview:
I'm working on a new project for a 3rd party company that has already shipped one iPhone app. I've set myself up as a Team Admin under their account, generated a development certificate for myself, and been able to develop the new app successfully. I can install and test on my iPhone without a problem.
Now it's time to create an Ad Hoc build for the client to test. This is where I'm struggling.
They already have a distribution certificate. To generate my Ad Hoc provisioning profile, I need to tie it to that existing certificate. Unfortunately, that certificate is not on my machine, so the Ad Hoc profile isn't working.
I've had the client send me the .p12 and .pem files from their keychain, and added them to my login Keychain. What else do I need to do?
I've tried downloading the distribution certificate and dragging it on to Xcode -- no effect. I don't see it under my list of Developer Profiles in the Xcode Organizer.
I've tried to import it into Keychain Access. No effect. It doesn't seem to appear anywhere.
What am I missing???
Since I never got any response to this question, I'll answer it myself.
Or rather, I'll refer to the answer rob5408 provided to this question:
iPhone: Can a dev other than team agent build an app for distribution
That did the trick.

Problem with Iphone distribution provision profile

I have a problem
There is one iphone software product of our company
and this product can recieve push_notification messages from our push_notification server
this product is going to be on live(namely it is going to be in the APPSTORE)
so recently we are doing some testing work,(the product use developer provision profile,and the server use the development certificate),it works well
but we want to test the product in the REAL Environment
the server should use production certificate ,
the iphone side product should use DISTRIBUTION PROVITION PROFILE
Now the problem is
1.how to install the product in the device using the DISTRIBUTION PROVITION PROFILE
instead of developer provision profile.
2.if I use the DISTRIBUTION PROVITION PROFILE,can i recieve the push notification message
I am now online waiting for your anwser
thank you all
You can only install builds that have been built for ad-hoc distribution on your device. Builds for app store distribution will not run on any device, unless approved and installed through the store, as their only purpose is being submitted to the app store.
1: Just build your app using an ad hoc provisioning profile. Delete previous versions of the app on the device. Install the ad hoc build and the ad hoc provisioning profile.
2: I have not tried that, but I think this should work, provided you're using the push enabled app-id for your ad hoc provisioning profile and the ssl key and certificate have been installed on your notification server.

Why not use development provisioning instead of ad hoc?

I was under the impression that when you use a development provisioning profile for a build of an app, only the specified developers can deploy that build to a phone.
But I just deployed a build that uses a development profile to a phone using Xcode Organizer, even though I'm not one of the valid developers for that profile. One of my colleagues, who doesn't even have Xcode installed, did the same with his phone using iTunes.
In that case, why not use a development provisioning profile for distributing your app to e.g. your QA team, instead of ad hoc distribution?
EDIT: Please read the part in bold carefully before answering. I'm not asking a basic "how does this work" question. I've made a lot of development, ad hoc, and app store builds, and now I find that I seem to have made some wrong assumptions.
There's one situation in which you need an Ad Hoc profile, and that's when you want to test Push Notifications.
If you test Push Notifications on a Development Provisioning Profile, your push notifications need to be sent using the Development Push Notification Certificate for your SSL connections to Apple's sandbox APNS server.
If you want to test Push Notifications using your Production Push Notification Certificate and the live APNS servers, you'll have to deploy your app to a device using a Distribution Certificate and Ad Hoc Provisioning Profile (which includes doing the Entitlement.plist steps, which you can ordinarily skip if you were only using Developer Provisioning Profiles).
Also note that when you deploy using an Ad Hoc profile, your device token will be different from the one you use when you're using the development profile. This the recommended way to test APN because there's no back end changes that need to be made between the Ad Hoc build and the final live deployment on the AppStore.
Ad-Hoc is not for developers, but for testers. Who do not have iPhone SDK / XCode, iTunes only.
(The answer is: you can install ad-hoc app without developer certificate, and can't do it with development app)
Method 1: Install from XCode
The Development Provisioning Profile requires you to run the app (initially) from within XCode.
This has the side-effect of marking the device as being used for development, but also requires you to connect the iPhone/iPod Touch to the machine running XCode. Once you run the app from XCode, the app is installed on the device and you no longer need to be connected to the machine to run it. (Until you want to update the app.)
Method 2: Install from iTunes
An Ad-Hoc provisioning profile allows you to give the app to anyone and let them install it themselves using iTunes. You send them:
the app, and
the Ad-Hoc Provisioning Profile
They select these two and drag them onto iTunes. Then sync.
Later, you can give them an updated version of the app only (without the Ad-Hoc Provisioning Profile, since they've already installed that on their device) and they can drag the new app onto the iTunes icon to install the new version.
One limitation to Ad-Hoc distribution, is that it requires you to enter each Device ID into the iPhone Development Portal. And there is a limit to 100 device IDs per year (you cannot erase any IDs, until your next year begins -- only add them). The 100-ID limit will not be a hindrance for most developers, just keep in mind that you need to get the device ID ahead of time, before you create the Ad-Hoc Provisioning Profile to send to the person you want to install your app.

what kind of certificate do I need to test apns using ad-hoc distribution?

I can't understand from Apple's docs if I need a production certificate or a development certificate...
You need to create a Distribution Certificate. The Distribution Certificate are used for creating Distribution Provisioning Profiles. Which will allow you to do the following:
Create an Ad-Hoc version of your app (this is used if you want to distribute to beta-users, testers, etc (this is what you want))
Create an App Store version of your app (You'll do this once you're ready to submit it to the App Store)
Below are the Apple steps on how to create an Ad-Hoc version of an app
Ad Hoc distribution allows you to share your application with up to 100 iPhone or iPod touch users, and to distribute your application through email or by posting it to a web site or server. To prepare your application, the following steps will need to be completed.
Create and Download an iPhone Distribution Certificate
Create and Download an Ad Hoc Distribution Provisioning Profile
Build your application with Xcode
Share your application file and the Ad Hoc Distribution Provisioning Profile with the owner of each device
Recipients of the application will need to drag the application file and Ad Hoc Distribution Provisioning Profile into iTunes, then sync their iPhone to iTunes to install
Hope this information points you in the right direction. If you need additional details or walkthroughs just let me know.
The SSL certificate you need is for production when you're building with a distribution provisioning profile. As far as push (apns) is concerned, ad hoc == app store. This is quite helpful, as you can test how push will work in the app store build by building an ad hoc app and using the production certificate.