2014-06-23 153 views
3

我已經整合谷歌分析SDK v3在我的iOS應用程序,我現在需要跟蹤屏幕視圖。以下是我目前看到在他們的網站:谷歌分析ios屏幕瀏覽

enter image description here 這裏是我正在使用的代碼(手動屏幕衡量):

+ (void)setupGoogleAnalytics 
{ 
    // User must be able to opt out of tracking 
    [GAI sharedInstance].optOut = NO; 
    // Initialize Google Analytics with a 120-second dispatch interval. There is a 
    // tradeoff between battery usage and timely dispatch. 
    [GAI sharedInstance].dispatchInterval = 120; 
    [GAI sharedInstance].trackUncaughtExceptions = YES; 
    [[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose]; 
    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; 
    [[GAI sharedInstance] trackerWithName:[infoDictionary objectForKey:@"CFBundleDisplayName"] trackingId:GOOGLE_ANALYTICS_TOKEN]; 
    [[GAI sharedInstance].defaultTracker set:kGAIAppVersion value:[infoDictionary objectForKey:@"CFBundleShortVersionString"]]; 

} 

+ (void)dispatchLogView:(NSString *)viewName Category:(NSString *)category action:(NSString *)action label:(NSString *)label value:(NSNumber*)value withProperties:(NSDictionary *)dictProp 
{ 
    NSMutableDictionary *event = [[GAIDictionaryBuilder createEventWithCategory:category 
              action:action 
              label:label 
              value:value] build]; 
    [[GAI sharedInstance].defaultTracker send:event]; 

    [[GAI sharedInstance].defaultTracker set:kGAIScreenName value:viewName]; 
    [[GAI sharedInstance].defaultTracker set:kGAIDescription value:viewName]; 
    [[GAI sharedInstance].defaultTracker send:[[GAIDictionaryBuilder createAppView] build]]; 

    [[GAI sharedInstance] dispatch]; 
} 

SetupGoogleAnalytics被稱爲上didFinishLaunchingWithOptions。在做出這些更改後,我仍然在「屏幕視圖」&「屏幕/會話」部分下看到零。老實說,我不知道我錯過了什麼讓它正常工作。這裏是我用來整合它的鏈接https://developers.google.com/analytics/devguides/collection/ios/v3/screens#manual

有沒有人遇到過同樣的問題?有沒有人對此有任何意見?

在此先感謝您的幫助...

回答

4

我試過以下方法,以便能夠跟蹤Google Analytics上的屏幕。你可以試試看看它是否適合你。

首先,請確保頭文件,也是項目已根據谷歌提供的指導正確配置:Google Analytics SDK for iOS v3 - Getting Started

接下來,下viewDidLoad中爲您要跟蹤的屏幕: -

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    id tracker = [[GAI sharedInstance] defaultTracker]; 
    [tracker set:kGAIScreenName value:@"Home Screen"]; 
    [tracker send:[[GAIDictionaryBuilder createAppView] build]]; 
} 

根據viewDidAppear: -

-(void)viewDidAppear:(BOOL)animated{ 

    self.screenName = @"Home Screen"; 
    [super viewDidAppear:animated]; 
} 

這沒有錯。 self.screenName必須將置於[super viewDidAppear:animated];之前,以便在Google Analytics上跟蹤屏幕。這很奇怪,但它只能在我自己的項目的某些特殊情況下工作。也許它會對你的項目起作用。

注:同時爲viewDidLoad中viewDidAppear屏幕名稱應該是相同的。

+0

今天,我刷新了谷歌分析頁面,最後它顯示了112個iOS屏幕視圖,但我不知道他們是如何得到它們的(我嘗試了太多的解決方案,我不知道哪一個是正確的) 。我的問題是:谷歌分析是否需要時間刷新/顯示更新後的值,因爲它不是實時數據? – Maystro

+0

是的,它需要一些時間才能顯示,至少12小時。但有一個功能「實時」,它應該顯示實時數據。我建議您將跟蹤代碼放在viewDidLoad和viewDidAppear上。只要屏幕名稱在同一視圖控制器中相同,它就會將它們視爲一個單一屏幕。 – Ricky

+0

感謝您的意見,情況確實如此。我需要至少等12小時才能看到Google Analytics(分析)頁面上的更新數據。 – Maystro

2

我做了這樣和它的作品。 對於每一個我的視圖控制器的viewDidAppear的:

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; 
[tracker set:kGAIScreenName value:@"XXX view"]; 
[tracker send:[[GAIDictionaryBuilder createAppView] build]]; 

我補充這AppDelegate中的didFinishLauching

[GAI sharedInstance].trackUncaughtExceptions = YES; 
[[GAI sharedInstance].logger setLogLevel:kGAILogLevelVerbose]; 
[GAI sharedInstance].dispatchInterval = 20; 
[[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXXXXXX-X"]; 

的kGAILogLevelVerbose記錄其活動發送到服務器的每20秒,所以,你可以看到它。這僅用於您的案例的調試目的,請確保在提交您的應用程序之前對其進行註釋。

此外,您應該能夠在實時屏幕上查看您的屏幕查看調試時有1個用戶。

祝你好運。

+0

它仍然沒有工作。不知道爲什麼! – Maystro

+0

@Maystro你確定你在didFinishLauching中設置了GAI? – John

+0

老實說,看來我的實現是正確的,因爲數據每天都在更新。問題是我不知道我需要等待至少12小時才能正確更新數據。感謝您的輸入,但我無法接受您的答案。 – Maystro

2

常規設置

從谷歌Analytics(分析)iOS版的文件兩者。 您可能希望他們中的一些添加到您的didFinishLaunchingWithOptions

// 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. Replace with your tracking ID. 
[[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"]; 

另外,你有兩個選擇跟蹤視圖控制器事件。

選項A - 實現自動絲網測量

讓谷歌分析自動測量在你的應用的觀點,有你的視圖控制器延伸GAITrackedViewController。使用您想要在報告中顯示的屏幕名稱設置名爲screenName的媒體資源。

#import "GAITrackedViewController.h" 

@interface HomeViewController : GAITrackedViewController 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    self.screenName = @"Your screen name that should show up in Google Analytics"; 
} 

選項B - 手動跟蹤屏事件

手動觸發每個所需的ViewController的事件。 以下內容添加到您的視圖控制器的viewDidAppear

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker]; 
[tracker set:kGAIScreenName value:@"Your screen name that should show up in Google Analytics"]; 
[tracker send:[[GAIDictionaryBuilder createAppView] build]]; 
0

你好@Maystro你必須設定在Google分析的日期開設的帳戶, 然後你可以在那裏看到你的時事。如果你不那麼。 我讀過你說過「感謝你的輸入,事實是這樣,我需要等待至少12小時才能看到谷歌分析頁面上的更新數據 - Maystro Jun 27 at 6:34」

and請申請

[GAI sharedInstance].dispatchInterval = 10; 

爲了快速響應每10秒。 和檢查以下,你在你的AppDelegate.m 致電

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self startGoogleAnalytics]; 
    ....//your other code 
} 

- (void)startGoogleAnalytics 
{ 
    NSDictionary *appDefaults = @{kAllowTracking: @(YES)}; 
    [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; 

    // User must be able to opt out of tracking 

    [GAI sharedInstance].optOut = 
    ![[NSUserDefaults standardUserDefaults] boolForKey:@"allowTracking"]; 

    // Initialise Google Analytics with a 120-second dispatch interval. There is a 
    // tradeoff between battery usage and timely dispatch. 

    [GAI sharedInstance].dispatchInterval = 10; 
    [GAI sharedInstance].trackUncaughtExceptions = YES; 
    [[GAI sharedInstance] trackerWithName:@"XYZ_Tracker" 
          trackingId:@"UA-XXXX-Y"]; 
} 

應用,然後使用

self.screenName = @"Your screen name that should show up in Google Analytics"; 

[[tracker set:kGAIScreenName value:@"Your screenName"]build]]; 

希望把你的屏幕狀態塊!您的需求將通過上面可以解決步驟

1

斯威夫特3

let tracker = GAI.sharedInstance().defaultTracker 
    tracker?.set("Home Screen", value: "Home Screen") 
    let screenTracker: NSObject = GAIDictionaryBuilder.createScreenView().build() 
    tracker?.send(screenTracker as! [AnyHashable: Any])