Google Analytics(分析)不适用于iOS

我在Google Analytics帐户中的configuration:

在这里输入图像说明

我的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { GAI *gai = [GAI sharedInstance]; //gai.optOut = YES; gai.trackUncaughtExceptions = YES; // report uncaught exceptions gai.logger.logLevel = kGAILogLevelVerbose; // remove before app release [[GAI sharedInstance] setDispatchInterval:10.0]; [[GAI sharedInstance] trackerWithTrackingId:@"UA-xxxxxx-3"]; return YES; } 

在视图控制器中:

  • (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];

     id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; [tracker set:kGAIScreenName value:@"Detail Screen"]; [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createScreenView] build]]; 

    }

它在我的控制台中显示:

 2015-06-24 15:03:36.592 GoogleAnalyticsDemoiOS[9540:264576] VERBOSE: GoogleAnalytics 3.12 +[GAITrackerModel initialize] (GAITrackerModel.m:88): idfa class missing, won't collect idfa 2015-06-24 15:03:36.619 GoogleAnalyticsDemoiOS[9540:264576] INFO: GoogleAnalytics 3.12 -[GAIReachabilityChecker reachabilityFlagsChanged:] (GAIReachabilityChecker.m:159): Reachability flags update: 0X000002 2015-06-24 15:03:36.644 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 -[GAIBatchingDispatcher persist:] (GAIBatchingDispatcher.m:517): Saved hit: { parameters = { "&_crc" = 0; "&_s" = 1; "&_u" = ".etnoKo9L"; "&_v" = "mi3.1.2"; "&a" = 800078077; "&aid" = "com.mycompany.app"; "&an" = GoogleAnalyticsDemoiOS; "&av" = "1.0"; "&cd" = "Detail Screen"; "&cid" = "caf03508-eba6-42f8-9600-3832ce042907"; "&dm" = "x86_64"; "&ds" = app; "&sr" = 750x1334; "&t" = screenview; "&tid" = "UA-xxxxxxxx-3"; "&ul" = en; "&v" = 1; "&z" = 663648936779959001; gaiVersion = "3.12"; }; timestamp = "2015-06-24 07:03:36 +0000"; } 2015-06-24 15:03:36.644 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 __70-[GAIBatchingDispatcher checkIAdCampaignAttributionWithHitParameters:]_block_invoke (GAIBatchingDispatcher.m:749): iAd campaign tracking disabled because the iAd framework is not linked. See http://goo.gl/426NGa for instructions. 2015-06-24 15:03:46.642 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 -[GAIRequestBuilder requestGetUrl:payload:] (GAIRequestBuilder.m:195): building URLRequest for https://ssl.google-analytics.com/collect 2015-06-24 15:03:46.643 GoogleAnalyticsDemoiOS[9540:264684] VERBOSE: GoogleAnalytics 3.12 -[GAIBatchingDispatcher dispatchWithCompletionHandler:] (GAIBatchingDispatcher.m:632): Sending hit(s) GET: https://ssl.google-analytics.com/collect?av=1.0&cid=caf03508-eba6-42f8-9600-3832ce042907&tid=UA-64362429-3&a=800078077&dm=x86_64&cd=Detail+Screen&t=screenview&aid=com.wow.touch&ul=en&_u=.etnoKo9L&ds=app&sr=750x1334&v=1&_s=1&_crc=0&an=GoogleAnalyticsDemoiOS&_v=mi3.1.2&ht=1435129416641&qt=10001&z=663648936779959001 2015-06-24 15:03:46.710 GoogleAnalyticsDemoiOS[9540:264576] INFO: GoogleAnalytics 3.12 -[GAIBatchingDispatcher didSendHits:response:data:error:] (GAIBatchingDispatcher.m:226): Hit(s) dispatched: HTTP status -1 2015-06-24 15:03:46.710 GoogleAnalyticsDemoiOS[9540:264684] INFO: GoogleAnalytics 3.12 -[GAIBatchingDispatcher deleteHits:] (GAIBatchingDispatcher.m:529): hit(s) Successfully deleted 2015-06-24 15:03:46.711 GoogleAnalyticsDemoiOS[9540:264684] INFO: GoogleAnalytics 3.12 -[GAIBatchingDispatcher didSendHits:] (GAIBatchingDispatcher.m:237): 1 hit(s) sent 

但在实时视图中,我总是有0个活跃用户。 任何想法? 谢谢

– – 更新 – –

这是我如何修复:

1 – 在AppDelegate中添加这个属性和#define指令(如果你没有在你的应用程序中):

 #define IS_IOS7_AND_UP ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) @interface AppDelegate () // Used for sending Google Analytics traffic in the background. @property (nonatomic, assign) BOOL okToWait; @property (nonatomic, copy) void (^dispatchHandler)(GAIDispatchResult result); @end 

2-在viewDidLoad我使用dispatchInterval作为20和初始化跟踪器共享实例:

 [GAI sharedInstance].dispatchInterval = 20; //[[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose]; // Initialize tracker. [[GAI sharedInstance] trackerWithTrackingId:MY_GoogleAnalyticsID]; 

3 – 为你的AppDelegate添加这个方法:

 // This method sends hits in the background until either we're told to stop background processing, // we run into an error, or we run out of hits. We use this to send any pending Google Analytics // data since the app won't get a chance once it's in the background. - (void)sendHitsInBackground { self.okToWait = YES; __weak AppDelegate *weakSelf = self; __block UIBackgroundTaskIdentifier backgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ weakSelf.okToWait = NO; }]; if (backgroundTaskId == UIBackgroundTaskInvalid) { return; } self.dispatchHandler = ^(GAIDispatchResult result) { // If the last dispatch succeeded, and we're still OK to stay in the background then kick off // again. if (result == kGAIDispatchGood && weakSelf.okToWait ) { [[GAI sharedInstance] dispatchWithCompletionHandler:weakSelf.dispatchHandler]; } else { [[UIApplication sharedApplication] endBackgroundTask:backgroundTaskId]; } }; [[GAI sharedInstance] dispatchWithCompletionHandler:self.dispatchHandler]; } 

在applicationDidEnterBackground调用sendHitsInBackground方法的最后:

 - (void)applicationDidEnterBackground:(UIApplication *)application { // // . . . // if (IS_IOS7_AND_UP) [self sendHitsInBackground]; } 

5 – 添加performFetchWithCompletionHandler方法并调用sendHitsInBackground:

 // In case the app was sent into the background when there was no network connection, we will use // the background data fetching mechanism to send any pending Google Analytics data. Note that // this app has turned on background data fetching in the capabilities section of the project. - (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { if (IS_IOS7_AND_UP) [self sendHitsInBackground]; completionHandler(UIBackgroundFetchResultNewData); } 

Google Analytics(分析)将在这一努力之后开始工作。 我在多个应用程序中尝试这个。 如果您有任何问题,请告诉我。

无论如何,我不相信只有一个分析工具,需要一些替代品。 我build议你使用Flurry和/或Crashlytics(Fabric)。 被雅虎收购的Flurry,被Twitter收购的Crashlytics。 为什么面料,因为它有太多的function,你会爱上!

在这里你可以试试他们:

面料: https //fabric.io

Flurry: http //www.flurry.com

你可以打电话给他们

 didFinishLaunchingWithOptions ... [self yourAnalyticServices]; 

你的代码如下所示:

 - (void)yourAnalyticServices { //Flurry Analytics [Flurry setAppVersion:kAppVersion]; [Flurry startSession:kFlurryAnalyticsID]; // [Flurry setCrashReportingEnabled:NO]; [Flurry setUserID:[NSString stringWithFormat:@"%@", kUserUUID]]; //Google Analytics // Optional: automatically send uncaught exceptions to Google Analytics. //[GAI sharedInstance].trackUncaughtExceptions = YES; // Optional: set Google Analytics dispatch interval to eg 20 seconds. [GAI sharedInstance].dispatchInterval = 20; // Optional: set Logger to VERBOSE for debug information. //[[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose]; // Initialize tracker. [[GAI sharedInstance] trackerWithTrackingId:MY_GoogleAnalyticsID]; //Crashlytics [Fabric with:@[CrashlyticsKit]]; } 

AppDElegate.m文件中:

 #import "AppDelegate.h" #import "GAI.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GAI sharedInstance].trackUncaughtExceptions = YES; [GAI sharedInstance].dispatchInterval = 1; [[[GAI sharedInstance] logger]setLogLevel:kGAILogLevelVerbose]; id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"TrackingId"]; [GAI sharedInstance].defaultTracker = tracker; return YES; } 

ViewController.h中

 #import <UIKit/UIKit.h> #import "GAITrackedViewController.h" @interface FirstViewController : GAITrackedViewController @end 

ViewController.m中

 - (void)viewDidLoad { [super viewDidLoad]; self.screenName = @"RED Screen"; } 

试试吧 。 这对我来说很好。 我尝试了三个以上的应用程序。 而且所有的都在实时工作。 如果您的应用的帐户是新的,那么您可能需要等待24小时或更长时间才能看到结果。 有时无需任何原因显示实时数据需要时间。