Is it possible to give an ad hoc build for iPhone, without asking for device id? - iphone

Is it possible to give an ad hoc build for iPhone, without asking for device id?
I want to deploy the app to a couple of people but I don't want to ask for device id to create a profile and all that stuff.
Is that possible?
if not, what is the easiest way to do it?

Simply put, no.
If you're concerned about the complexity of getting the UDIDs from your testers, I recommend having them install & use Ad Hoc Helper, which makes the process very simple (as long as they have e-mail set up on the device).

You can't do an AdHoc build without device ids as that would give you a distribution channel outside of the appstore. AdHoc is designed for testing only
An enterprise account does not have any device id requirements for deployment but you do need to be a company with DnB number etc and pay the $300 annual fee.

Not easily.
Apple likes to control the distribution channel. If you could distribute your app without knowing device IDs in advance, you could make a competing app store. Apple requires that you list device IDs and limits you to 100-some devices, which presumably should be enough for development/testing purposes.
Some possible solutions:
If you're distributing to other developers, they can re-sign the app with their own provisioning profile and certificate (i.e. replace MyApp.app/embedded.mobileprovision, CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate codesign -f -s 'iPhone Developer' MyApp.app. Additionally, you might need to specify entitlements).
The iOS Developer Enterprise Program presumably has a higher limit, but I suspect you still need to list device IDs.
A jailbroken phone will run unsigned apps.

No, it's not possible (unless you (and your people) work with jailbroken devices).
Assuming you are not going to put your app on iTunes, I guess you have to ask their device ids, at least for once.
However, once you have their ids, the remaining part would be as simple as to give them an URL. They just go to the URL with their mobile Safari, and can directly download the app.
Here's a link to show how to do that:
http://www.readwriteweb.com/mobile/2010/12/apple-best-kept-secret-how-to-do-ad-hoc-installs.php

Related

Distribute iphone app for external beta - sign on behalf of customer

My Company is building an app which we want the external customers to try out before submitting to the app store. Since in-house builds can only be distributed to employees of the company, what's the best way to get the app to beta customers without going through the app store?
If the customer signs up for a developer or enterprise account and gives us their certificate, is it ok to sign the app on their behalf and give it to them?
Thanks!
Update: Number of devices is more than 100.
If you have less than 100 devices you want to run the app on, you can do adhoc builds and distribute them via your own web server or TestFlight. You will need the UDID of every device that it will be installed on, though. I usually suggest people run Ad Hoc Helper for that. See iPhone ad hoc build using Xcode 4 and http://itunes.apple.com/us/app/ad-hoc-helper/id285691333?mt=8
My answer requires devices to be jailbroken.
Since you say you need more than 100 devices, you could fake sign the app. This will allow you to install on as many devices as you need.
P.S. I recommend option #2 on the fake signing link I gave you.

iPhone ad hoc distribution without getting user details in advance

Is there anyway I can ad hoc distribute my app without asking for information about the beta-testers device?
In other words, I want to distribute my app to some friends for testing. Can I do this without requesting info from them first?
If this is not possible, exactly what info do I need to get from them before I am able to set up an ad hoc version for them?
Use TestFlight. It will allow you to invite users and will add them on-the-fly. It's a really great tool for managing ad-hoc and beta tests for iOS.
If you do it on your own, the only info you really need is the UDID of their device.
This isn't possible.
All you need is the UDID from each tester. You could suggest they use an app like this to send you their UDID to make things simple for them.
I'm pretty sure you need their device UUID and device name. That way you can add them to the provisioning profile so the app will run on their device, and this also allows apple to limit distribution to those on your list (max 100 devices). You then need to build the app with this provisioning profile, get your beta testers to install the provisioning profile on their device, and then finally install the app.
You could ask your users to download the excellent ad hoc helper from the app store which let's them send an email with all the info automatically generated.

What's the point of the provisioning process Apple makes you complete in order to test your apps on an iOS device?

Today I walked to through the process of getting my iOS device connected to my computer and running my app. To do that, I had to...
Obtain a developer certificate
Assign the device to my team
Obtain my app ID
and create a provisioning profile
While I understand the process and was able to successfully get my device connected, I don't at all understand the point of all this. Can anyone explain the point of each step in that process and why Apple has us do this?
Thanks so much in advance for your help! It's important to me to understand this stuff at least at a high level.
Apple just wants to torture the developers :)
Joking aside, I don't know why. There's no official explanation why you need those steps, here's my speculation.
Apple wants to make sure that
only the developer registered to Apple can freely install
onto his or her i-Devices
applications of his or her own applications .
This is presumably to forbid the distribution of apps outside of Apple's own App Store. If any of these three steps is not required,
it's easy to imagine how you can "abuse" the developer status to install lots of apps without going through App Store.
This explains why you need to do 1, 2 and 3. In order for XCode and the i-Device itself to check it, you need a provisioning profile. This explains the point 4.
As a rough explanation.. the device only runs signed apps. Your developer certificate (along with your private key) signs your app so it can run on your device. (or other development devices of your nomination)
If you beta test, your Ad Hoc certificate + provisioning profile will allow all devices with their UDID in the profile to run that app. The beta testers don't need your developer certificate, just their device UDID embedded in the profile.
When you distribute to the app store, you use a Distribution profile (along with the team agent key), and that needs additional signing (co-signing?) from Apple before that code can run on the device. Because Apple signed it, the device doesn't care what UDIDs are allowed.
Apple has made a business decision to maintain tight control over developers and apps both during and after their app development. This means that at any given point in time, they have a tight connection between a developer, app, devices, and the app's users, be it through the adhoc distribution mechanism, or through purchases that users make in iTunes Store. We may only speculate what they internally thought that the goals and benefits here are, but as the market has shown, the outcome is beneficial to all parties, as they have shot from oblivion to one of the most popular smartphone platforms in a few years.
One quite straightforward goal is that they intend to maintain control of the distribution channel and make sure the app cannot be officially distributed through any side channels and they have control over all the money that moves, hence the 100-deviceIDs-per-developeraccount limit (so you couldn't distribute your app outside Apple's channel, yet the 100 devices should be sufficient for closed testing).

Can I put my own app on just my iphone?

I want to create an iphone app for personal use.
Can I just put it on my phone and use it or do I have to go through the iphone store process to get it on my phone?
Thanks.
As long as you have a valid developer certificate to sign the app and you have a development provisioning profile and your device is registered as a test device. For that you need to be registered as an iPhone Developer Program member.
In other words, you have to pay Apple $99 to be able to put your own app on your own phone.
Yes, you can run your own apps on your phone. You need a paid iPhone developer account though.
Purchase a developer account for $99 from Apple. Create a developer provisioning file and build to your device. The annoyance will be the provisioning file is good for a limited time, requiring you to update it periodically and rebuild.
To run an app on an un-jailbroken iDevice, it needs to be signed. Registered developers get personal signing keys (and also have to register the device) which lets them test their apps. They also can do ad-hoc distribution, meaning compiling and signing an app so that other people can use it without being registered. This is limited in the number of users who can use it though.
Enterprise developers can sign apps for internal distribution, sorta like unlimited ad-hoc, but that program is expensive and unnecessary for what most people do.
As pointed out by others here, you can sign up as a developer to temporarily install apps on your device for testing purposes, but you would constantly need to renew your phone's installed provisioning profile to keep using it over time.
The only way to permanently put your own application on an un-jailbroken phone is to publish it to the app-store and download it through iTunes. Of course, Apple would need to accept the app so you would need to face the same regulations as other apps sold via iTunes, and your app would be public to everyone.

Is it possible to install third-party apps on an iPhone? If not, how is it controlled?

Can I go around Apple and offer applications to users, or do they force you to go through them? How? Just legally?
Aside from the App Store (and jailbreaking), Apple provides two official routes to install applications on the iPhone.
Enterprise Distribution: designed for internal users of a company
Ad Hoc Distribution: allows your app to be installed on up to 100 iPhones
Source: http://developer.apple.com/iphone/program/distribute.html
For phones that are not jailbroken, distribution rules are enforced by the iPhone's code-signing system. The phone won't run any apps that aren't signed by Apple, and the only way to get an app signed is either to get it into the app store or to use ad-hoc distribution.
Ad-hoc is effective but time consuming for more than a few devices, in that you have to get the unique device ID for each device you want to distribute the app to. You then sign the app for that device and send a copy along with a provision file. Some batching is possible-- you can get up to 100 devices in the same ad-hoc build. But if/when Apple finds out you're doing it, they'll close your iPhone developer account (for violating the rules) and then you won't be able to generate any more provision files.
One developer tried using the ad-hoc approach last year when Apple rejected their app (Podcaster). They claimed to have sold something like 1100-1200 copies before Apple shut them down.
Jailbroken phones don't have this limitation, but it's up to you to determine (a) whether the market is big enough and (b) whether enough of those people will be willing to pay for your app. I don't know the answers-- it could well be "yes" to both-- but don't just assume they're true without investigating enough to make a reasonable prediction.
If you wish to distribute applications to phones with out going through the App Store, you must sign each copy of your application for a specific phone handset. If you need more wide spread distribution, all your client phones must be "jail broken". Once a phone is jail broken, it will accept any application for installation.
You can offer applications through Cydia for jailbroken iPhones / iPods. Cydia uses a system similar to Debian's apt. Basically allows users to add custom "sources" (repositories) and install applications provided by those sources.
Obviously this is not supported or approved by Apple since it circumvents the App store and their App approval process.