Analytics Options

24 views
Skip to first unread message

Aaron Kardell

unread,
Dec 21, 2009, 3:51:17 PM12/21/09
to iphon...@googlegroups.com
Has anyone directly used Pinch Media, Mobclix Analytics, or Medialets Medialytics?  Any strong opinions on the solution vs. other alternatives?

Any feedback appreciated.  Feel free to contact me off-list if you'd prefer.

Thanks and Happy Holidays.

Aaron

Bill Heyman

unread,
Dec 21, 2009, 4:15:23 PM12/21/09
to iphon...@googlegroups.com
I've had a pretty good experience with Pinch Media in many of my projects. It's easy to integrate. The reporting has been reasonable.

Mobclix got put on my s-list because of spamming and cold calling me.


--

You received this message because you are subscribed to the Google Groups "iphonedevmn" group.
To post to this group, send email to iphon...@googlegroups.com.
To unsubscribe from this group, send email to iphonedevmn...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/iphonedevmn?hl=en.

Dan Grigsby

unread,
Dec 21, 2009, 4:18:40 PM12/21/09
to iphon...@googlegroups.com
I haven't used Flurry but am fond of the company and the people behind it.   

Aaron Kardell

unread,
Dec 21, 2009, 4:19:10 PM12/21/09
to iphon...@googlegroups.com
Thanks, Bill.  I can second the Mobclix calling.  Good reminder.  I've received numerous calls from them and I haven't even integrated their Advertising or Analytics solutions yet.

Aaron

Aaron Kardell

unread,
Dec 21, 2009, 4:23:20 PM12/21/09
to iphon...@googlegroups.com
Their Appcircle offering also looks intriguing.  Thanks for the note.

Bill Heyman

unread,
Dec 22, 2009, 9:25:01 AM12/22/09
to iphon...@googlegroups.com
I guess you no longer have to decide between PInch Media and Flurry: Flurry and  Pinch Media to create mobile analytics powerhouse

Tony Jensen

unread,
Jan 2, 2010, 1:57:40 PM1/2/10
to iphon...@googlegroups.com
Hello everyone. I have mostly lurked here after attending Dan's class in Minneapolis. I wanted to let you all know that my first iPhone contract is complete and the app has been approved.

The app is StealthType SMS. It helps you write text messages with 100% accuracy without having to look at the screen using a custom hit detection engine which allows you to move your finger over the entire interface, with audio feedback, and when you lift your finger it then selects that key you've touched.

It was an absolute blast to build. I architected and wrote it for Cleverlike Corporation here in Denver and was just told this past week that it made it to the store.

The calibre of answers on this list has been great and I have learned a lot from those who post. I would love to get feedback on the app from you.

(iTunes app store link) http://is.gd/5G7mb

---

Tony Jensen
to...@coloradojensens.com
www.ColoradoJensens.com

John Sheets

unread,
Jan 21, 2010, 10:40:04 AM1/21/10
to iphon...@googlegroups.com
On Dec 21, 2009, at 2:51 PM, Aaron Kardell wrote:

Has anyone directly used Pinch Media, Mobclix Analytics, or Medialets Medialytics?  Any strong opinions on the solution vs. other alternatives?

Any feedback appreciated.  Feel free to contact me off-list if you'd prefer.

A little late to the game, but I come bearing code.  I've tinkered with PinchMedia, Flurry, and Localytics and had settled on Flurry.  Most features were a wash between the three, with a few minor differences, e.g.

* Sending custom parameters with an event (Flurry only)
* Exception reporting (Flurry only)
* Event start/stop timing (PinchMedia only)

At the time I compared them, I don't think Localytics had any compelling API features that the others didn't have.

As I recall, the other big defining feature was how long it took for stats to register on their respective web sites.  It's been awhile since I compared them (way before the Flurry/PinchMedia merge), but from what I remember Localytics was the fastest, Flurry was decent but not real time, and Pinch Media was the slowest.

For me it came down to personal preference.  Flurry's exception reporting sealed the deal (also before Apple started collecting crash reports for us).

To make it easier to switch between the analytics libraries, I cobbled together a set of #define macros (see below).  To use them, you can define a single preprocessor constant (USE_PINCH_MEDIA, USE_FLURRY, or USE_LOCALYTICS).  If none of them are defined, the macros are no-ops with a logging statement.  This makes it easy to disable analytics in your Debug build and turn it on in your Release or Distribution builds.  You could even make different configurations for each service, but I didn't go that far.

John


-------------------

/**
 * Analytics Macros
 *
 * START_ANALYTICS
 * END_ANALYTICS
 * 
 * EVENT_ANALYTICS(eventName)
 * EVENT_ANALYTICS_START_CUSTOM(eventName, params)        --> param events only on Flurry Analytics
 *
 * EVENT_ANALYTICS_START(eventName)                       --> timed events only on Pinch Media
 * EVENT_ANALYTICS_END(eventName)
 * 
 * REPORT_ERROR_TO_ANALYTICS(errorName, errorMessage, e)  --> error logs only on Flurry Analytics
 */


#if defined(USE_PINCH_MEDIA)
#import "Beacon.h"
#define API_KEY (@"...")
#define ANALYTICS_NAME @"PinchMedia"
#endif

#if defined(USE_FLURRY)
#import "FlurryAPI.h"
#define API_KEY (@"...")
#define ANALYTICS_NAME @"Flurry Analytics"
#endif

#if defined(USE_LOCALYTICS)
#import "LocalyticsSession.h"
#define API_KEY (@"...")
#define ANALYTICS_NAME @"Localytics"
#endif


// 
// Declare Pinch Media macros.
// 
#if defined(USE_PINCH_MEDIA)
#define START_ANALYTICS \
  NSLog(@"Initializing PinchMedia.");\
  [Beacon initAndStartBeaconWithApplicationCode:API_KEY useCoreLocation:YES useOnlyWiFi:NO];

#define END_ANALYTICS [Beacon endBeacon];

#define EVENT_ANALYTICS(eventName)\
  NSLog(@"PINCHMEDIA: Event '%@'.", eventName);\
  [[Beacon shared] startSubBeaconWithName:eventName timeSession:NO];

#define EVENT_ANALYTICS_START(eventName)\
  NSLog(@"PINCHMEDIA: Timed event '%@'.", eventName);\
  [[Beacon shared] startSubBeaconWithName:eventName timeSession:YES];

#define EVENT_ANALYTICS_START_CUSTOM(eventName, params)\
  NSLog(@"PINCHMEDIA: Custom event '%@' (params not supported: %@).", eventName, params);\
  [[Beacon shared] startSubBeaconWithName:eventName timeSession:NO];

#define EVENT_ANALYTICS_END(eventName)\
  NSLog(@"PINCHMEDIA: End of timed event '%@'.", eventName);\
  [[Beacon shared] endSubBeaconWithName:eventName];

#define REPORT_ERROR_TO_ANALYTICS(errorName, errorMessage, e)\
  NSLog(@"PINCHMEDIA: Error Reporting not supported: '%@' (%@) - %@", errorName, errorMessage, e);

#endif


// 
// Declare Flurry Analytics macros.
// 
#if defined(USE_FLURRY)
#define START_ANALYTICS \
  NSLog(@"Initializing Flurry Analytics.");\
  [FlurryAPI startSession: API_KEY];\
  [FlurryAPI setSessionReportsOnCloseEnabled:YES];

#define END_ANALYTICS

#define EVENT_ANALYTICS(eventName)\
  NSLog(@"FLURRY: Event '%@'.", eventName);\
  [FlurryAPI logEvent:eventName];

#define EVENT_ANALYTICS_START(eventName)\
  NSLog(@"FLURRY: Event '%@' (event duration not supported).", eventName);\
  [FlurryAPI logEvent:eventName];

#define EVENT_ANALYTICS_START_CUSTOM(eventName, params)\
  NSLog(@"FLURRY: Event with params '%@' %@.", eventName, params);\
  [FlurryAPI logEvent:eventName withParameters: params];

#define EVENT_ANALYTICS_END(eventName)

#define REPORT_ERROR_TO_ANALYTICS(errorName, errorMessage, e)\
  NSLog(@"FLURRY: Error Reported: '%@' (%@) - %@", errorName, errorMessage, e);\
  [FlurryAPI logError:errorName message:errorMessage exception:e];

#endif


// 
// Declare Localytics macros.
// 
#if defined(USE_LOCALYTICS)
#define START_ANALYTICS \
  NSLog(@"Initializing Localytics.");\
  [[LocalyticsSession sharedLocalyticsSession] startSession:API_KEY];

#define END_ANALYTICS \
  [[LocalyticsSession sharedLocalyticsSession] close];\
  [[LocalyticsSession sharedLocalyticsSession] upload];

#define EVENT_ANALYTICS(eventName)\
  NSLog(@"LOCALYTICS: Event '%@'.", eventName);\
  [[LocalyticsSession sharedLocalyticsSession] tagEvent:eventName];

#define EVENT_ANALYTICS_START(eventName)\
  NSLog(@"LOCALYTICS: Event '%@' (event duration not supported).", eventName);\
  [[LocalyticsSession sharedLocalyticsSession] tagEvent:eventName];

#define EVENT_ANALYTICS_START_CUSTOM(eventName, params)\
  NSLog(@"LOCALYTICS: Custom event '%@' (params not supported: %@).", eventName, params);\
  [[LocalyticsSession sharedLocalyticsSession] tagEvent:eventName];

#define EVENT_ANALYTICS_END(eventName)

#define REPORT_ERROR_TO_ANALYTICS(errorName, errorMessage, e)\
  NSLog(@"LOCALYTICS: Error Reporting not supported: '%@' (%@) - %@", errorName, errorMessage, e);

#endif


// 
// Blank out definitions if neither framework is enabled.
// 
#if !defined(USE_PINCH_MEDIA) && !defined(USE_FLURRY) && !defined(USE_LOCALYTICS)
#define START_ANALYTICS\
  NSLog(@"No analytics frameworks enabled.");

#define END_ANALYTICS

#define EVENT_ANALYTICS(eventName)\
  NSLog(@"No-op analytics for event: '%@'.", eventName);

#define EVENT_ANALYTICS_START(eventName)\
  NSLog(@"No-op analytics for timed event: '%@'.", eventName);

#define EVENT_ANALYTICS_START_CUSTOM(eventName, params)\
  NSLog(@"No-op analytics for custom event: '%@' %@.", eventName, params);

#define EVENT_ANALYTICS_END(eventName)\
  NSLog(@"No-op analytics for timed event completion: '%@'.", eventName);

#define REPORT_ERROR_TO_ANALYTICS(errorName, errorMessage, e)\
  NSLog(@"No-op analytics for Error Reporting: '%@' (%@) - %@", errorName, errorMessage, e);

#endif





-- 

John Sheets

"The Internet is not something you just dump something
on.  It's not a big truck.  It's a series of tubes."
 --Senator Ted Stevens, R-AK


Aaron Kardell

unread,
Jan 21, 2010, 10:47:36 AM1/21/10
to iphon...@googlegroups.com
Thanks, John.  Impressive set of macros.  Thanks for sharing.

I can also now report back that I am using Flurry in a couple of apps now as well, and it is working great.  I'm very pleased.  Hoping to join the beta for Flurry AppCircle before long...  If I do, I'll report my findings.

Aaron

Henry

unread,
Jan 27, 2010, 6:27:16 PM1/27/10
to iphonedevmn
Thanks for the code snippet John. It's great to be able to actually
test these things rather than just talk about them!

Since the time of this comparison we at Localytics have launched
support custom event parameters as well
(See this blog post for a sample http://www.localytics.com/blog/post/new-feature-explored-event-attributes/).
This is helpful for collecting all sorts of timely event related data
including errors and exceptions.
We do this in real-time, like everything else we collect.

One thing not covered in this review is the depth of the data
presented. Check out our demo
http://analytics.localytics.com/demo/ to see how we allow all of our
metrics to be cut or
viewed down to hourly granularity for any given day. For example, if
you have an event,
such as "ad clicked" and you wish to know what country or on what
carrier this is happening
most frequently, you only have to cut the event by those fields.

I encourage you guys to check out the demo, play with our open source
libraries and send us me
feedback you may have about how we can do better!

Thanks,

-- Henry

On Jan 21, 10:47 am, Aaron Kardell <akard...@gmail.com> wrote:
> Thanks, John.  Impressive set of macros.  Thanks for sharing.
>
> I can also now report back that I am using Flurry in a couple of apps now as
> well, and it is working great.  I'm very pleased.  Hoping to join the beta
> for Flurry AppCircle before long...  If I do, I'll report my findings.
>

Reply all
Reply to author
Forward
0 new messages