Why not use development provisioning instead of ad hoc? - iphone

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.

Related

Do I need to rebuild and deploy the build again after expiration of provisioning profile?

My Enterprise application is having more than 1000 users in production. Yesterday my provisioning profile got expired. From yesterday I got many calls of users that they did not able to use their app.
Is there any way so that the existing user don't need to install the new build again. Because its very difficult to tell more than 1000 users to reinstall the app again.
Please help me. The issue is with production.
Unfortunately, you will need to get the new provisioning profile on the devices somehow. The provisioning profile must get on the device, and you can simply provide the new profile by itself, or you can rebuild the app and the profile will be included in the app's payload.
There are a couple of ways to do this, but here are the most popular methods:
If the devices are managed using an MDM product, you can push the new profile out to the devices using the MDM capabilities. Again, you can use the MDM system to push just the provisioning profile, or you can push the new app build with the new provisioning profile. Judging by the fact that you would be requesting users to re-download the app, I don't believe you are using MDM to manage the devices.
If you have older devices (iOS 7 and before), you can have the user manually install the new profile. You can email the provisioning profile to the users, and they will be able to open the profiles on their device. Or you can host the profile on a web server and direct the users to open the link to install the profile. The app will then work with the new, valid profile.
Rebuild the app and re-distribute. When the users download the app (or any other apps built with the profile if you are using a wildcard identifier on your profile), the new profile should replace the other one and the app will be able to launch.
Unfortunately, all of these methods require you to get the new profile downloaded from the developer site onto each of those devices.

How do I distribute ad hoc OTA apps without the .mobileprovision?

I followed a set of instructions from multiple sources about how to deploy apps ad hoc without the need for itunes; however, I ran into a discrepancy. I got the necessary distribution certificate, made an ad hoc provisioning profile, used the profile to build and archive, shared the app, filled out the necessary fields, uploaded the .ipa and .plist files to my server, and tested. I couldn't install the app because there was no provisioning profile on the device. I uploaded the provisioning profile, tried downloading it from the device, and it worked. Now I can download and install the apps without connecting to my computer.
However, when testing on a different device, the app refused to run. I found out that it was because the mobile provisioning file was refusing to install, and that was because developer mode was not turned on on the device. I then found out that in order to turn on developer mode I have to connect to a computer.
Is there a way around this issue, to either turn on developer mode without connecting to a computer, or to not need the provisioning profile installation installed, or to somehow install the provisioning profile on the device without developer mode on?
I don't see a mention of developer mode or the provisioning profile on this page: http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html
What am I missing here? Thanks.
Archive your app with the profile having all the device UDID's that you want to support. This should solve your problem.
TestFlightApp.com
You can distribute ad hoc (limited to 100 devices) or enterprise (deploying custom apps company-wide > 100 devices). Plus, Apple just acquired them so either their service will get even better or they'll integrate it with Xcode 6.
Using TestFlight at work and it's amazing! Track who downloads you builds, gather feedback, import the TestFlight SDK and it will even report crashes.

IPhone Ad-hoc distribution sync error

I am working on an iPhone application for a customer. After the development will be finished the application will be on the Apple Store, but meanwhile during its development, on a regular basis the customer wants to see and install the application on his own phone to check the current status of the development.
-I went to the provisioning portal registered my customer's device udid and added to my application's provisioning profile.
-I downloaded the provisioning profile and installed it.
-I then built the ipa and sent it to my customer.
SHouldn't this be enough?
The customer is experimenting a sync error. He can import the ipa inside itunes but at the end of the sync he receive this error alert on his iphone.I tested this ipa file on two other iphones and is working (both registered and one is ios 5.1 and the other 5.0.1)..Where should I check for misconfigurations?
I'm running the latest xcode version 4.3.1
Make sure you build with the distribution provision. I use a new Xcode build configuration for this (called Ad Hoc) and I make sure my archive build uses this new build configuration. The customer will need a copy of this distribution provision (which he double clicks), and you send him the ipa file. He drags this into his iTunes library and he is then able to install the app to his device.
Sometimes the provisioning profile needs to be installed on the device separately. I encountered this problem once with my team member who had Windows.
Just send your customer the profile and ask to install it on the device.
You may need iPhone Configuration Utility to install the profile on the device.

Provisioning Profiles + Push Notifications + Production vs Development

I'm building an iOS app that uses push notifications, and I'm finally ready to submit it. Before I do, I'd like to test out push notifications off the Production server, to make sure everything is working correctly. Thus far, the sandbox environment has been working fine.
After doing quite a bit of searching, I learned that switching the servers over from ssl://gateway.sandbox.push.apple.com:2195 to ssl://gateway.push.apple.com:2195 wasn't enough, and that production push tokens are different from sandbox push tokens. Instead, apparently I need a new provisioning profile with Production entitlements, new certs installed on my server, and to re-build my app with said profile so that it knows to create the correct push tokens.
So, after going through all the steps, I can't even make a build run on my phone; XCode says
This profile cannot be installed on devices
Here are the steps I've taken. If I'm missing something please let me know:
In my iOS Developer Center, I've made sure that my AppID is "enabled for production" under the Apple Push Notification Service.
Also in my iOS Developer Center, I've created my Production Push SSL Certificate, gone through the necessary conversion steps, and installed the resulting .pem on my server.
Per the instructions, I've create "a new provisioning profile containing the App ID you wish to use for notifications." I've done this by going to Provisioning, and clicking on the "Distribution" tab, and making a new profile. I've confirmed that "production" is set under the "entitlements" section of this profile.
I've selected the provisioning profile in my project settings. I get the message
This profile cannot be installed on devices
and I'm stuck.
Build an ad-hoc distribution version of your app, and install it on your own device. That will use the production APN gateway and certs.
You cannot install an app compiled with a appstore distribution (production) profile on a device. Only Apple reviewers can do that. you can only test push on an app compiled in development mode and using sandbox server.
If you want to test production servers, you must compile the app using an AdHoc distribution profile enabling the devices you want to do the test. Clearly you must recompile and the send the app for review using the App Store distribution profile.

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.