How to test the final distribution build before submitting it for review to the iPhone app store? - iphone

I have developed an iPhone App and I want to test this final distribution build before submitting it to the App Store for review.
Is there any safe way to make this app to run on a device?

You might want to also check out Craig Hockenberry's "The final test" blog post.
Craig gives a method of testing where the only difference between what you test and what you submit is the signing identity.

No, you can't. This makes me a little nuts, too. If you set up an ad-hoc distribution profile, that is as close as you can get. On the "positive" side, you're guaranteed to have your app rejected if it can't be installed properly...

check this out, you can actually test a distribution build :
http://nikhilkerala.blogspot.com/2010/12/how-to-test-app-store-distribution.html

You can setup a beta through the iPhone portal program. You can then load the App and the associated profile onto a phone through iTunes or XCode.

I know this question is a little old, but I've recently found a better way of testing and distributing my Apps prior to submission and this method allows me to easily get it on real devices without having to have the device physically in my hands or have the user muck with provisioning profiles, certificates or iTunes syncing.
Developers can create an account on TestFlight and create a team.
After creating a team, invite testers to your team (click "Invite a Teammate" on the team's page). The tester will receive an invitation email to join your team and will be walked through the process of creating a basic account (name, email, password) and will have their device registered and their account will be added to your team.
Once you have your testers in place, go to your team's page and select all the testers, export their device information via the link and import that list into an Ad-Hoc distribution profile.
Import that profile (and the Ad-Hoc certificate) into Xcode and rebuild your project and share it as an *.ipa file.
Go back to your TestFlightApp.com team's page and upload the binary. All the testers on your team with access to the build will get an email notification about it. All they have to do is click "Install" in the email and they will be taken to a TestFlightApp.com page that will install the App on their device over the air, no iTunes, no mucking around with profiles, etc.
I tested it this morning actually and I'm very impressed with how easy it is and it also happens to be free.

It is actually possible to install the distribution build if you have once previously installed an Ad Hoc build on your phone. Most people simply never tried it =)
And no jailbreak is required. For step by step instructions, see my answer here:
Testing App Store "Distribution" version

Related

Do I need to be in the iOS Developer Program to send my app builds through TestFlight?

A quick question:
Do I need to buy an Apple Developer Program membership/certification ($99/yr) for testing via TestFlight?
Yes. The reason is because TestFlight needs a valid ad hoc distribution provisioning profile to be submitted along with the binary. And you can't create the provisioning profile without an iOS Developer Account.
PS: Just being a team member in someone else's iOS Developer Team does not help. To create distribution profiles you need to be a team agent.
Edit:
Updating this answer, since Apple has acquired Testflight and the service is part of iTunes. You now definitely need to be in the iOS Developer program to send builds through Testflight :)
Another alternative is Crashlytics Beta if Testflight is not your thing.

How best to share iOS app progress with customer

I'm making an iOS app for a client, and need to share my progress with them in a convenient way.
At the moment I know of two options:
add their device to my provisioning profile then send an IPA to them
send an app through to them, built for the simulator, and have them run that directly
Neither of these are ideal, as the simulator doesn't give the full experience, and getting UDIDs off non-technical people can be painful.
Are there any other options I should know about?
I use testflight - iOS beta testing on the fly. I used to battle with the same problems you mentioned but once I started using testflight, I didn't look back. What testflight allows is -
You can add the specific customer to send the IPA to.
Progress reports
No need for your customer to go through the complicated Provisioning certificate
No need to register your device
You can even create groups and send different builds to different groups. Like "Test Group" would get more bleeding edge builds whereas the customers might get a more stable build.
Free over-the-air beta distribution. Apps are installed in one tap over-the-air and users will be notified of future builds.
Recruitment: Promote your beta app and select new users that sign up
Works within Apple’s guidelines and rules for ad hoc provisioning and device # limitations
You don’t need to jailbreak or alter your phone.
It is not a replacement for Apple’s ad hoc provisioning profile and device limitations.
Hope this helps...
PS: I do not work at testflight & this is not a promo. Just appreciating a good product...
UPDATE: Recently test flight has launched TestFlight Live, pretty awesome for tracking launched apps. This is all with detailed flowcharts et al. Definitely worth a dekko. Defunct after Apple buying TestFlight (or available in different name)
LATER UPDATE: Apple has bought TestFlight. Links updated.
https://testflightapp.com takes a lot of the pain out of circulating iOS app builds. It's free and it's worked very well for me.

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.

Share my iPhone app for testing

I'm writing a new iPhone app and want to share it with a couple of friends for testing and general feedback and sign-off. Is there a way I can do that?
They are located in a different state, and they don't have a Mac either.
Edit: I wrote this post a long time ago. Since then, services such as TestFlight have come along which do this entire process. This is really the way to go!
You need to make an ad hoc build which your friends can install on their phones. It's a bit of a pain, but basically, the procedure goes like this:
Go to the Apple Developer Center's Provisioning Portal and register their device ID's. You will need to have your friends give you their device ID's, which can be done by clicking on the "Serial Number" field in iTunes on the device page.
Generate a distribution certificate for ad hoc distribution in the Provisioning Portal under Provisioning -> Distribution
Download that certificate yourself (the .mobileprovision file) and install it into Xcode by dragging it on the Xcode icon.
Duplicate your "Release" build setting in Xcode for an Ad Hoc build. Everything should be the same as Release, except in the "Code Signing" section you will want to select the new Ad Hoc profile generated in step 3.
Make an Ad Hoc build by going to Build -> Build and Archive
When Xcode brings up the organizer window, right click on the archived build and make a .ipa file by saving it to disk
Tell your friends to drag the mobile provisioning profile to the iTunes icon (or with File -> Open for windows users) to install it on their phone.
Tell your friends to drag the .ipa file you made into iTunes, and sync their phones
At this point, the app should be installed on their phone, but lots of things can go wrong, so you should definitely read Apple's documentation on the subject as well.
Note that this procedure won't work unless your friends are using iTunes to sync applications with their phones. Also, as noted, you will need to be a paying developer in ADC to even access any of the Provisioning Portal stuff.
You need to create an ad-hoc provisioning profile and build your app with that. Then send both a .zip compressed build and the profile to your friends (maybe over e-mail). They don't necessarily need Macs... Windows will do just fine, as long as they have the latest iTunes installed.
There's more information (including how-tos) at the iOS Provisioning Portal.
All this assumes you've paid your $99 and are a registered iOS developer.

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.