Objective-C ã§ Google Analytics SDK 3 ãã»ããã¢ããããæé
ã¯ããã«
Objective-C ã§ Google Analytics ã使ããããã« GoogleAnalytics-iOS-SDK 3 ãå°å ¥ããä¾ãæ¸ãã¾ãããããã ã³ã¼ãããå ±éåã®ä¾ã¾ã§ãç´¹ä»ãã¾ããå ¬å¼ã®ããã¥ã¡ã³ãã¯こちらã§ãã
ãããã ã³ã¼ãç·¨ï¼2014å¹´06æ16æ¥æ´æ°ï¼
ã¾ãã¯åä½ããã¾ãããã
Podfile ã«ã©ã¤ãã©ãªã追å ãã¾ããCocoapods ã®å°å ¥æ¹æ³ã¯こちらã
+ pod 'GoogleAnalytics-iOS-SDK', '3.0.2'
ã¤ã³ã¹ãã¼ã«ãã¾ãã
$ pod install
[projectname]-Prefix.pch ãç·¨éãã¾ããGoogle Analytics ID ã¯é©å®æå®ãã¦ãã ããã
#ifdef __OBJC__ // google analytics #import "GAI.h" #import "GAIDictionaryBuilder.h" #import "GAIFields.h" ... #endif #define GOOGLE_ANALYTICS_ID @"UA-XXXXXX-X" ...
AppDelegate.h ã§ã©ã¤ãã©ãªãåæåãã¾ãã
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... // initialization: Google Analytics GAI *gai = [GAI sharedInstance]; gai.trackUncaughtExceptions = YES; gai.dispatchInterval = 5; [[gai logger] setLogLevel:kGAILogLevelError]; // ãã°ã¬ãã«ãå¤ãããã¨ãã§ãã [gai trackerWithTrackingId:GOOGLE_ANALYTICS_ID]; ... }
è¨æ¸¬ããã ViewController ã以ä¸ã®ããã«ç·¨éãã¾ãã
- (void)viewDidAppear:(BOOL)animated { // ã¹ã¯ãªã¼ã³ãã¥ã¼ãè¨æ¸¬ [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:@"ããããã¼ã¸"]; [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createAppView] build]]; ... } - (void)hasPaid { // ã¤ãã³ããè¨æ¸¬ // // 以ä¸ã¯åãã©ã¡ã¿ã®ã¡ã¢: // - Category: åé¡ããããããã«é©å®æå®ï¼ä¾: ãªã½ã¼ã¹åã¨ãã¦"ã³ã¡ã³ã"ã»"ã¡ãã»ã¼ã¸" ãªã©ï¼ // - Action: ã¦ã¼ã¶ãèµ·ãããè¡åï¼ä¾: CRUDã¨ãã¦"使"ã»"èªè¾¼"ãªã©ï¼ // - Label: ã¢ã¯ã·ã§ã³ã®èµ·ãããã対象ããã©ã¡ã¿ãªã©ã®ä»å æ å ±ããµãã«ãã´ãªçã«ä½¿ãã¨ãããããå¿ è¦ãªããã° nil ãæå® // - Value: 管çç»é¢ããåè¨ã¨å¹³åãè¦ãããã®ã§ããã®ãããªåæããããæ°å¤ããã¨ãã°èª²éé¡ãå¿ è¦ãªããã° nil ãæå® [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createEventWithCategory:@"課é" action:@"åºåé表示" label:@"ã¯ã¼ãã³ã³ã¼ã使ç¨" value:100] build]]; }
ããã¾ã§æ¸ãããåä½ã確èªãã¾ãããã
ãããããè¨æ¸¬ããã¦ãããã¨ã¯ããã«ç¢ºèªãããã¨ãã§ãã¾ããGoogle Analytics ã®ç®¡çç»é¢ã®å·¦ã¡ãã¥ã¼ã«ããããªã¢ã«ã¿ã¤ã ï¼ã¹ã¯ãªã¼ã³, ã¤ãã³ãããã覧ãã ããã
ãªã GAITrackedViewController ãç¶æ¿ããã¨ããå°ãã©ã¯ã«ã¹ã¯ãªã¼ã³ãè¨æ¸¬ã§ããããããã¾ããï¼公式ドキュメント参照ï¼ãä»åã®ã¨ã³ããªã§ã¯ä½¿ã£ã¦ãã¾ããã
以ä¸ããããã ã³ã¼ãã¨ãªãã¾ããæ¬¡ã«å
±éåã®ä¾ã 2ã¤ããã¾ãã
å ±éåç·¨ï¼ä¾1ï¼
å°å ¥
Rails ã® ApplicationController ã®ããã«ãViewController ã®è¦ªã¯ã©ã¹ãå®ç¾©ãã¾ãããã¹ã¦ã® ViewController ã§ç¶æ¿ãã¾ãããã
ãªããååã®è¡çªé²æ¢ã®ããã«ã¯ã©ã¹åã¯ãããã¸ã§ã¯ãå°ç¨ã®ããªãã£ãã¯ã¹ + ApplicationViewControllerããã¤ããããã«ãã¦ãã¾ããä¾ãã°ããã¸ã§ã¯ãåã MyProject ãªãã¯ã©ã¹å㯠MPApplicationViewController ã¨ãã¾ãã
å¼ã³åºããå´
MPApplicationViewController.h
#import <UIKit/UIKit.h> @interface MPApplicationViewController : UIViewController - (void)trackScreen:(NSString *)screenName; - (void)trackEvent:(NSString *)category action:(NSString *)action label:(NSString *)label value:(NSNumber *)value; @end
MPApplicationViewController.m
#import "MPApplicationViewController.h" @interface MPApplicationViewController () @end @implementation MPApplicationViewController #pragma mark - Google Analytics - (void)trackScreen:(NSString *)screenName { [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:screenName]; [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createAppView] build]]; } - (void)trackEvent:(NSString *)category action:(NSString *)action label:(NSString *)label value:(NSNumber *)value { [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createEventWithCategory:category action:action label:label value:value] build]]; } @end
å ±éãã親ã¯ã©ã¹ãã¤ãã£ã¦ããã¨è²ã ã¨ã¯ãã©ãã¾ããä¾ãã° iOS7対å¿ã® ```self.edgesForExtendedLayout = UIRectEdgeNone;``` ã¨ãã£ãã³ã¼ãã viewDidLoad ã§ä¸æ¬æå®ã§ãã¾ãã
å¼ã³åºãå´
MPSampleViewController.h
#import "MPApplicationViewController.h" @interface MPSampleViewController : MPApplicationViewController // å¿ããã«ç¶æ¿ ... @end
MPSampleViewController.m
- (void)viewDidAppear:(BOOL)animated { [self trackScreen:@"ããããã¼ã¸"]; } - (void)hasPaid { [self trackEvent:@"課é" action:@"åºåé表示" label:nil value:100]; }
ãã£ãããã¾ãããå
±éåãã¦ããã° GAI ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãå¤ãã£ãæã夿´ç®æãå°ãªãã¦æ¸ã¿ã¾ãã
å ±éåç·¨ï¼ä¾2ï¼
ã¹ã¯ãªã¼ã³ãè¨æ¸¬ããã¡ã½ããããã¹ã¦ã® ViewController ã§å¼ã¶ã®ãããã©ãããããããã¾ããããããªæã®æ¹æ³ã§ããåæã¨ãã¦ããã¹ã¦ã® ViewController ã§ MPApplicationViewController ãç¶æ¿ãã¦ããã¨ãã¾ãã
MPApplicationViewController.m
#import "MPTopViewController.h" #import "MPSettingsViewController.h" - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; // ApplicationViewController ãç¶æ¿ããå ¨ViewController 㯠Google Analytics ã®è¨æ¸¬å¯¾è±¡ã¨ãã // ã¹ã¯ãªã¼ã³åã¯ãã¡ãã§ä¸å 管çãã // ããã©ã«ãã§ ViewControlleråãã¹ã¯ãªã¼ã³åã«ã»ãããã¦ãã NSDictionary *controllerScreenNameMappings = [self getControllerScreenNameMappings]; NSString *className = NSStringFromClass(self.class); NSString *screenName = controllerScreenNameMappings[className]; [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:(screenName ? screenName : className)]; [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createAppView] build]]; } - (NSDictionary *)getControllerScreenNameMappings { NSDictionary *mappings = @{ NSStringFromClass([MPTopViewController class]): @"ããã", NSStringFromClass([MPSettingsViewController class]): @"è¨å®", ... }; return mappings; }
ãããã«
以ä¸ã¨ãªãã¾ãããã®ãã Google Analytics ã©ã¤ãããéãããã ããã