TestFlight » iOS app testing, tracking, etc.

Wednesday, March 14th, 2012

I’m working on a small iPad project (making a LITE version of an existing app) and the previous developer made me aware of TestFlight.

It’s pretty amazing. If you make iOS apps, you definitely need to sign up.

Once you have an account…

  1. You invite people via email to register their devices.
  2. Once they do that, go to the TestFlight website and export their device ID’s. You’ll get a text file.
  3. Log into the iOS provisioning portal and select Devices.
  4. Upload their devices
  5. Go to the Provisioning Section
  6. Edit your Provisioning Profile
  7. Put a checkmark next to the devices that you want to add to your profile…these are the testers that you want to be able to run your app on their device
  8. Submit…wait a bit.
  9. Download the Profile
  10. Drag the file onto the XCode icon
  11. Now you can create Adhoc distributions for those devices
  12. Follow this tutorial to create an Archive file of your app
  13. Log in to your TestFlight account and upload this build
  14. Confirm the users
  15. Your users will get an email. They click on the link in the email from their iOS devices…and the app will install!!!

AIR app – user idle detection

Wednesday, March 14th, 2012

Found out that it is super easy to deal with timeouts…i.e. when you create kiosk applications, you generally want the activity to timeout and go to some sort of attract screen or activity reset when no one has touched the screen, move the mouse or press the keyboard.

There’s the NativeApplication class for AIR to the rescue:


/* this is in seconds */
NativeApplication.nativeApplication.idleThreshold = 60;
NativeApplication.nativeApplication.addEventListener(Event.USER_IDLE, handleUserIdle);
NativeApplication.nativeApplication.addEventListener(Event.USER_PRESENT, handleUserPresent);

private function handleUserIdle (e:Event) : void
{
  trace("Idling...");
  //reset activity
  //show attract screen
}

private function handleUserPresent (e:Event) : void
{
  trace("There's a user!");
  //hide attract screen
}