matsuda
12/19/2012 - 7:47 AM

Google Analytics for iOS 's useful macros

Google Analytics for iOS 's useful macros

#import "GAI.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"

/********************************
 init
 ********************************/

#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
    [[GAI sharedInstance] trackerWithTrackingId:ACCOUNT]; \
    [GAI sharedInstance].dispatchInterval = PERIOD; \
    [GAI sharedInstance].trackUncaughtExceptions = YES; \
    [[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelError]; \
}

/********************************
 track screen
 ********************************/
#define GA_TRACK_SCREEN(SCREEN) { \
    [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:SCREEN]; \
    [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createAppView] build]]; \
}

/********************************
 track event
 ********************************/
#define GA_TRACK_EVENT(CATEGORY, ACTION, LABEL, VALUE) { \
    [[[GAI sharedInstance] defaultTracker] \
        send:[[GAIDictionaryBuilder createEventWithCategory:CATEGORY \
                                                     action:ACTION \
                                                      label:LABEL \
                                                      value:VALUE] build]]; \
}

/********************************
 util
 ********************************/
#define GA_TRACK_CLASS  GA_TRACK_SCREEN( NSStringFromClass([self class]) )
#define GA_TRACK_METHOD GA_TRACK_EVENT( NSStringFromClass([self class]), \
                                        NSStringFromSelector(_cmd), \
                                        @"", \
                                        [NSNumber numberWithInt:-1] )
#import "GAI.h"

/*
 Google Analytics for iOS v2 's Macros
 */

#define GA_DEBUG_FLAG 0

/********************************
 init
 ********************************/

#define __GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
    [GAI sharedInstance].trackUncaughtExceptions = YES; \
    [GAI sharedInstance].dispatchInterval = PERIOD; \
    [[GAI sharedInstance] trackerWithTrackingId:ACCOUNT]; \
    [GAI sharedInstance].defaultTracker.useHttps = YES; \
}

#if GA_DEBUG_FLAG
#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
    __GA_INIT_TRACKER(ACCOUNT, PERIOD); \
    [GAI sharedInstance].debug = YES; \
}
#else
#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
    __GA_INIT_TRACKER(ACCOUNT, PERIOD); \
    [GAI sharedInstance].debug = NO; \
}
#endif


/********************************
 track page
 ********************************/

#define GA_TRACK_PAGE(PAGE) [[GAI sharedInstance].defaultTracker trackView:PAGE]

/********************************
 track event
 ********************************/
#define GA_TRACK_EVENT(EVENT, ACTION, LABEL, VALUE) { \
    [[GAI sharedInstance].defaultTracker trackEventWithCategory:EVENT \
                                                     withAction:ACTION \
                                                      withLabel:LABEL \
                                                      withValue:VALUE]; \
};


/********************************
 util
 ********************************/
#define GA_TRACK_CLASS  GA_TRACK_PAGE( NSStringFromClass([self class]) );

#define GA_TRACK_METHOD GA_TRACK_EVENT( NSStringFromClass([self class] ), NSStringFromSelector(_cmd), @””, [NSNumber numberWithInt:-1]);

#import "GANTracker.h"

/*
 Google Analytics's Macros
 http://d.hatena.ne.jp/ninjinkun/20110115/1295074900
 http://tkyk.name/blog/2011/09/19/iOS-Xcode-iphone_google-analytics-for-ios/
 http://d.hatena.ne.jp/diveintounlimit/20120512/1336837189
 */

#define GA_DEBUG_FLAG 0

/********************************
 init
 ********************************/
#define __GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE) [[GANTracker sharedTracker] startTrackerWithAccountID:ACCOUNT dispatchPeriod:PERIOD delegate:DELEGATE];

#if GA_DEBUG_FLAG
#define GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE) { \
    __GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE); \
    [GANTracker sharedTracker].debug = YES; \
    [GANTracker sharedTracker].dryRun = YES; \
}
#else
#define GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE) __GA_INIT_TRACKER(ACCOUNT, PERIOD, DELEGATE);
#endif


#define GA_TRACK_VER(INDEX, NAME, VALUE) { \
    NSError *GA_ERROR = nil; \
    if (![[GANTracker sharedTracker] setCustomVariableAtIndex:INDEX name:NAME value:VALUE withError:&GA_ERROR]) { \
        NSLog(@"%@", GA_ERROR.helpAnchor); \
    } \
};
//#define GA_TRACK_VER { \
//    UIDevice *cd = [UIDevice currentDevice]; \
//    NSError *GA_ERROR = nil; \
//    if (![[GANTracker sharedTracker] setCustomVariableAtIndex:1 name:cd.model value:cd.systemVersion withError:&GA_ERROR]) { \
//        NSLog(@"%@", GA_ERROR.helpAnchor); \
//    } \
//};

/********************************
 stop
 ********************************/
#define GA_STOP_TRACKER [[GANTracker sharedTracker] stopTracker];


/********************************
 track page
 ********************************/

#if GA_DEBUG_FLAG
#define GA_TRACK_PAGE(PAGE) { \
    NSError *GA_ERROR = nil; \
    if (![[GANTracker sharedTracker] trackPageview:PAGE withError:&GA_ERROR]) { \
        NSLog(@"%@", GA_ERROR.helpAnchor); \
    } else { \
        NSLog(@"GA_TRACK_PAGE >>> %@", PAGE); \
    } \
};
#else
#define GA_TRACK_PAGE(PAGE) { \
    NSError *GA_ERROR = nil; \
    if (![[GANTracker sharedTracker] trackPageview:PAGE withError:&GA_ERROR]) { \
        NSLog(@"%@", GA_ERROR.helpAnchor); \
    } \
};
#endif


/********************************
 track event
 ********************************/
#define GA_TRACK_EVENT(EVENT, ACTION, LABEL, VALUE) { \
    NSError *GA_ERROR = nil; \
    if (![[GANTracker sharedTracker] trackEvent:EVENT action:ACTION label:LABEL value:VALUE withError:&GA_ERROR]) { \
        NSLog(@"%@", GA_ERROR.helpAnchor); \
    } \
};


/********************************
 util
 ********************************/
#define GA_TRACK_CLASS  GA_TRACK_PAGE( NSStringFromClass([self class]) );

#define GA_TRACK_METHOD GA_TRACK_EVENT( NSStringFromClass([self class] ), NSStringFromSelector(_cmd), @””, -1);