TestFlight - iOS testing Done Right

Previous topic - Next topic

Falstaff

Hey guys,

I briefly mentioned TestFlight in one of my posts, but just did a search and realized no one has posted about it here yet.  If you're targetting iOS at all, this is so incredibly useful. I'll try to summarize what they do in a paragraph.

It's a free web service that lets you manage a testing team as well as your app testing builds. Basically you sign up, register a team, and recruit testers to your team. As they register (on their device), their device ID is automatically stored for you to do the necessary provisioning on your end. Once you're done, you approve them and start uploading IPA's of your builds. TestFlight will scan the embedded provisioning info and let you choose which testers get access to which builds. Those people are then emailed. They can get the notification right on their device, click a link, and be installing your latest version. You get to see in real-time as they get notified, and install your app.

Really slick :)

On to my question: I already get a ton of value from their basic service. Now I'd like to take advantage of their SDK. With it, you can apparently gather more specific usage information.. such as how long the testers are playing for. They also have methods for popping up questions to ask your testers about certain things. Apparently you can also get crash logs through the SDK as well.

I'm following along with their SDK docs here. I've got the library referenced in my xcode project, and it shows up like it should (ie steps #1-2 are ok)

But step 3 is where I quickly get lost. I've seen some examples (such as here) of implementing code in GLB that calls code from the iOS xcode project, but I don't know if we have access to the "Application Delegate" they are referring to. Specifically this:

Quote
In your Application Delegate:

Import TestFlight: #import "TestFlight.h" NOTE: If you do not want to import TestFlight.h in every file you may add the above line into you pre-compiled header (<projectname>_Prefix.pch) file inside of the

#ifdef __OBJC__ section.
This will give you access to the SDK across all files.

Get your Team Token which you can find at http://testflightapp.com/dashboard/team/ select the team you are using from the team selection drop down list on the top of the page and then select edit.

Launch TestFlight with your Team Token

-(BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // start of your application:didFinishLaunchingWithOptions
    // ...
    [TestFlight takeOff:@"Insert your Team Token here"];
    // The rest of your application:didFinishLaunchingWithOptions method
    // ...
}

So, if you haven't heard of TestFlight.. def worth checking out.

And then, if anyone has any ideas how to get their SDK code working in GLB, I'm all ears!

ampos

I signed a while ago for a similar service and it was useless. The people just want to have "free" apps, and no reports were sent back. I got around 20 testers and 0 reports.

Sorry for the bad news.
check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

Falstaff

Ah right well I guess that could happen when I start opening our stuff up for public testing.. right now I've kept the testing team to a small group of 10 or so people that me or my artist personally know. And for that it's working perfectly :) TestFlight isn't a way to find testers.. just the means to send out test builds directly to peple's iDevices without them needing to sync to iTunes.

What service did you try?

ampos

check my web and/or my blog :D
http://diniplay.blogspot.com (devblog)
http://www.ampostata.org
http://ampostata.blogspot.com
I own PC-Win, MacBook 13", iPhone 3G/3GS/4G and iPAC-WinCE

kaotiklabs

sorry for the bump.

but any way to access the appdelegate to make this changes?
testflight now has a very interesting live user stats.
Vote Cthulhu! Because the stars are right!!!!
Ia Ia Cthulhu F' tang!

kaotiklabs

Solved.

Followed testflightapp steps and added testflight take off before glbasic call in xcode.

Easy and great.
Vote Cthulhu! Because the stars are right!!!!
Ia Ia Cthulhu F' tang!

Falstaff

Wait what did you do? So have you had success using some of the API features of Testflight now? Do you mind posting whatever steps you took?

kaotiklabs

Yes.
I explain here the easiest way.
Follow the TestFlight integration steps.

Remember to include the header in the iPhone_Prefix.pch.

#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "TestFlight.h"
#endif

Add the take off comand inside your main.m

Code (glbasic) Select
int main(int argc, char *argv[])
{
isIphone(); // must be called to enable appdelegate
        [TestFlight takeOff:@"your token here"];
return GLB_iPhone_call_main(argc, argv);
}



And thats all. Testflight running.

If you want to call any other testflight command, you must then add a wrapper in order to manage them.

Hope it helps you.
Vote Cthulhu! Because the stars are right!!!!
Ia Ia Cthulhu F' tang!

Falstaff

Thanks so much this is a big help :) I haven't actually looked into using any external APIs yet, so although I understand a wrapper is needed I'm unfamiliar with the syntax. I don't suppose you have an example function wrapped that you could share! It'll give me a huge head start when I sit down to play with this properly later tonight.

kaotiklabs

#9
Sorry but I´m not using a wrapper now because I don´t need additional sdk features but you can find several samples here in the forum and it should be quite easy to implement.

Maybe can be useful for adding some checkpoints or the feedback view but the rest is working with just the call in the above code: session tracking, crash handler, in-app updates... so I think the wrapper is not really needed.  =D

Vote Cthulhu! Because the stars are right!!!!
Ia Ia Cthulhu F' tang!

Falstaff

#10
ohhh ok I thought you'd need a wrapper to get even those features, does that mean you get crash logs too? That's so cool, I agree it's definitely a strong start. I'm still curious about their API for things like the feedback stuff they have.

Thanks again :)

[edit] Looks like it was pretty easy to get up and running after all, I can see my events firing under the "SDK Debugger" link in my TestFlight account, but my build still shows 0 sessions.. maybe it just takes awhile to update I guess.. are your sessions showing up?

[edit again] oh there they are! awesome!

kaotiklabs

Vote Cthulhu! Because the stars are right!!!!
Ia Ia Cthulhu F' tang!

Falstaff

Yeah I can see this being really useful for sure :) and I just noticed they have some sort of new service, "TeatFlightLive".. Looks like it might just be added functionality on top of their existing stuff.

kaotiklabs

Yes, live its working also for me.

Nice feature for user tracking!
Vote Cthulhu! Because the stars are right!!!!
Ia Ia Cthulhu F' tang!

hardyx

Quote from: ampos on 2011-Oct-28
ibetatest
Some comments about this page? Good users?
How provision files are managed?