2015-06-24 137 views
6
工作

我在谷歌Analytics(分析)配置帐户:谷歌Analytics(分析)不会在iOS中

enter image description here

我的代码:

- (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; 
} 

在视图控制器:

  • (无效)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

您创建账户多久以前?需要48 - 72小时才能开始记录数据 – DaImTo

+0

我有同样的问题,像@DaImTo说的那样48小时后有效吗? –

回答

3

---修订---

这里是我固定的:

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 

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

[GAI sharedInstance].dispatchInterval = 20; 
//[[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose]; 
// Initialize tracker. 
[[GAI sharedInstance] trackerWithTrackingId:MY_GoogleAnalyticsID]; 
0在applicationDidEnterBackground年底

// 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]; 
} 

4-调用sendHitsInBackground方法: -

3添加此方法为您的AppDelegate

- (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); 
} 

和谷歌分析将在这项工作后开始工作。我在多个应用程序中尝试此操作。如果您有任何问题,请告诉我。

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

在这里,你可以尝试一下:

面料:https://fabric.io

乱舞: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 e.g. 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]]; 
} 
+0

感谢您的回复。我可能会在其他应用程序中考虑它。但是,我的客户在此应用程序中要求提供Google Analytics。 –

+0

不客气@bagusflyer,我更新我的答案。 – mgyky

+0

我不认为使用其他工具的建议应被视为这个问题的正确答案。 – Donovan

2

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小时或更长时间才能看到结果。有时无需任何原因显示实时数据需要时间。

相关问题