谷歌分析ios屏幕视图

时间:2014-06-23 13:28:34

标签: ios google-analytics-api

我已经在我的iOS应用程序中集成了谷歌分析SDK v3,现在我需要跟踪屏幕视图。以下是我目前在其网站上看到的内容:

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

在didFinishLaunchingWithOptions上调用SetupGoogleAnalytics。进行这些更改后,我仍然在“屏幕视图”和“屏幕/会话”部分下看到零。老实说,我不知道我错过了让它正常工作。以下是我用来整合https://developers.google.com/analytics/devguides/collection/ios/v3/screens#manual

的链接

之前是否有人遇到过同样的问题?有人对此有任何意见吗?

先谢谢你的帮助......

5 个答案:

答案 0 :(得分:4)

我尝试了以下方法,以便能够跟踪Google Analytics上的屏幕。您可以尝试一下,看看它是否适合您。

首先,请确保根据Google提供的指南正确配置了头文件和项目: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 的屏幕名称应该相同。

答案 1 :(得分:2)

我是这样做的,它有效。  对于我的每个ViewController的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个用户。

祝你好运。

答案 2 :(得分:2)

常规设置

取自Google 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 - 实施自动屏幕测量

让google analytics自动衡量应用中的观看次数,让视图控制器扩展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]];

答案 3 :(得分:1)

Swift 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])

答案 4 :(得分:0)

您好@Maystro您必须在今天的GoogleAnalytics帐户中设置日期, 然后你可以在那里看到你当前的事件。如果你不这样做。 我读到你说“谢谢你输入,情况确实如此。我需要等待至少12小时才能在Google分析页面上看到更新的数据。 - Maystro 6月27日6:34”

请申请

[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]];

希望!您的要求将通过上述步骤解决