views:

1330

answers:

6

Sub: iPhone App : Beta testing on specific device before App goes to AppStore for public

How do you do specific beta testing?

I have registered 2 devices in App program portal. Only I have a Mac & device to download the App for testing. The other user does not have a Mac. But he has a iPhone. Is it possible for the other user to have the App downloaded for testing so we can discuss if we need any modifications before making the App live on AppStore for public.

I would appreciate any help. Thanks !

+3  A: 

Use Ad Hoc distribution.

KennyTM
+1  A: 

Follow the steps here to package the app for the tester. Publishing Applications for Testing

Then the tester should follow the steps here for installation. Instructions for Application Testers

Edit: Both links are to the reference documents from Apple itself and are likely to be kept more up to date as procedures change in later versions.

Brandon Bodnár
A: 

The other use can drag your Ad Hoc build into iTunes on Windows. There are some pretty good instructions here.

To create an Ad Hoc build, you can follow the instructions in the iPhone dev portal. It is similar to doing a release build, just using a different provisioning profile.

Colin Gislason
A: 

Ad-hoc distribution to Windows iTunes works as it does for Mac iTunes. I set up my Xcode projects per Apple's instructions for ad-hoc distribution, then added my own Makefile to create the distribution. Makefile snippet:

AdHoc AppStore : 
    rm -rf iphone/build/$@-${DEVICE_SDK}/${APP_NAME}.app
    cd iphone ; xcodebuild -target ${APP_NAME} \
            -configuration $@ -sdk ${DEVICE_SDK}${SDK_VERSION}
    for f in embedded.mobileprovision CodeResources _CodeSignature/CodeResources ; do \
            [ -f iphone/build/$@-${DEVICE_SDK}/${APP_NAME}.app/$$f ] || \
                    { echo BITCH MOAN COMPLAIN : missing $$f ; exit 1 ; } \
    done
    mkdir -p ${DISTRO_ROOT}/$@
    [ -f ${DISTRO_ROOT}/$@/[email protected] ] || \
            cp ${PROVISION_DIR}/[email protected] ${DISTRO_ROOT}/$@/[email protected]
    cd iphone/build/$@-${DEVICE_SDK} ; \
            rm -f ${DISTRO_ROOT}/$@/${APP_NAME}.app.zip ; \
            zip -r -y ${DISTRO_ROOT}/$@/${APP_NAME}.app.zip ${APP_NAME}.app
    cd ${DISTRO_ROOT}/$@ ; rm -rf ${APP_NAME}.app ; unzip ${APP_NAME}.app.zip ; \
            codesign -vvvvv ${APP_NAME}.app && rm -rf ${APP_NAME}.app || \
                    { rm -rf ${APP_NAME}.app ; exit 1 ; }
    cd iphone/build/$@-${DEVICE_SDK} ; \
            rm -rf Payload ; mkdir Payload ; \
            ln -s ../${APP_NAME}.app Payload/ ; \
            zip -r ${DISTRO_ROOT}/$@/${APP_NAME}.ipa Payload

My project structure is ./Makefile and ./iphone/MyProject.xcodeproj with sources in the expected place ./iphone/Classes/*.[hm]. Makefile variable explanations:

APP_NAME=whatever_your_app_is_named
DEVICE_SDK=iphoneos
DISTRO_ROOT=/some/path/you/like
PROVISION_DIR=~/Library/MobileDevice/Provisioning_Profiles
SDK_VERSION=3.1.2

I sym-linked Provisioning_Profiles to "Provisioning Profiles" for easier typing. I also hard-linked the appropriate provisioning profile in that directory as AppStore.mobileprovision or AdHoc.mobileprovision for easier updating.

The steps themselves are straight-forward: clear a build space, build the app, verify the code-signing bits are in place, prep a landing space for the distro, pull in the appropriate mobile-provision file, zip up the app, verify the signing, and zip up as an .ipa file. (Strictly speaking, the zipfile is needed only for AppStore, and the .ipa for AdHoc, but I put them both together for my own hysterical raisins. :-)

I then push the .ipa and the mobile-provision file up to a private website. My beta testers pull the .ipa down and drag-n-drop onto iTunes. Only if I add or remove a device does the mobile-provision change, thus forcing the beta testers to pull down and drag-n-drop the latest mobile-provision file.

This has worked very smoothly for me and my beta-testers on iClear (update in review).

Joseph Beckenbach
A: 

Thanks for all the postings/replies. I tried AdHoc distribution and got the build successfully. Now I dragged .app file & AdHoc distribution mobile provisioning file to iTunes so it will sync it to my device/iPod. I see it under Applications. But when I sync it to the device, it doesn't install it on my iPod. Any clue?

I would appreciate any help. Thanks.

sg
+1  A: 

I have been successful with AdHoc distribution. Thought of posting this info for someone else so it will help.

  1. From Program Portal > Provisioning > Distribution, you need to create a AdHoc provisioning profile.
  2. Download the AdHoc mobile provisioning file and make sure it's installed in your machine.
  3. Followed by this you should go to xCode and build the project as you would for Distributing.
  4. Make sure you select the "AdHoc mobile provisioning" for Code Signing under Build section properties. And Entitlements.plist specified.
  5. Also verify Build results as per document says.

Follow the documentation from Program Portal user Guide, for Build steps.

Then you can drag the .app and .mobileprovision file (you used for AdHoc distribution) to iTunes account. It installs the App for you. You can then sync to device. It works great.

You need to send just the .app & .mobileprovision file to people who want to preview the App before it can go to AppStore. Their UDID's (device ID's) should have been registered in your Program Portal account.

sg