Skip to content

Instantly share code, notes, and snippets.

@matsuda
Last active December 9, 2015 22:08
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matsuda/4335105 to your computer and use it in GitHub Desktop.
Save matsuda/4335105 to your computer and use it in GitHub Desktop.
Google Analytics for iOS 's useful macros
#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);
#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 "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] )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment