[英]Google Analytics doesn't work in iOS
我在Google Analytics帳戶中的配置:
我的代碼:
- (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];
}
4-在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);
}
谷歌分析將在這項工作之后開始工作。 我在多個應用程序中嘗試這個。 如果您有任何疑問,請告訴我。
無論如何,我不相信只有一個分析工具,需要一些替代方案。 我建議你使用Flurry和/或Crashlytics(Fabric)。 Flurry被雅虎收購,Crashlytics被Twitter收購。 為什么選擇Fabric,因為它有很多你愛上的功能!
在這里你可以試試:
面料: 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]];
}
在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小時或更長時間才能看到結果。 有時需要時間來顯示實時數據而沒有任何理由。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.