iOS中的Google Analytics(无法工作)

17

我正在尝试实现谷歌分析.. 你们能帮帮我吗

-(void) setGoogleAnalytics{

    // Initialize tracker.
    self.tracker = [[GAI sharedInstance] trackerWithName:@"ipad app"
                                              trackingId:kTrackingID];

    NSDictionary *appDefaults = @{kAllowTracking: @(YES)};

    [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
    // User must be able to opt out of tracking

    [GAI sharedInstance].optOut =
    ![[NSUserDefaults standardUserDefaults] boolForKey:kAllowTracking];

    // 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 = 5;

    // Optional: set Logger to VERBOSE for debug information.
    [[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose];

    [[GAI sharedInstance] setTrackUncaughtExceptions:YES];
}

并调用它

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
            [self setGoogleAnalytics];
    //
    //
    //
}

在我的ViewController实现中

 [self dispatchEvent:@"Purchase Done"];

[self trackViewName:NSStringFromClass([self class])];


 -(void) trackViewName:(NSString *) strClassName{
        [[GAI sharedInstance] defaultTracker];
        self.screenName=[NSString stringWithFormat:@"%@",strClassName];
        [self.tracker send:[[NSDictionary alloc] initWithObjectsAndKeys:strClassName,@"ViewName", nil]];
        [[GAI sharedInstance] dispatch];

    }

- (void)dispatchEvent:(NSString *)strButtonText{

    id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];

    [tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action"     // Event category (required)
                                                          action:@"button_press"  // Event action (required)
                                                           label:strButtonText          // Event label
                                                           value:nil] build]];    // Event value  = [[GAI sharedInstance] defaultTracker];

    [[GAI sharedInstance] dispatch];
}

我应该下载哪个版本的Google Analytics?目前我已经下载了GoogleAnalyticsServicesiOS_3.01.zip(推荐使用),因为我不想使用Beta版本的GoogleAnalyticsiOS_2.0beta4.zip。


只是提醒一下,你设置了 trackUncaughtExceptions 两次。 - Ricardo
我希望你已经有了一个可工作的GA版本,但为了确保其他人也能使用,我已经更新了我的答案以适应v3。 - Magyar Miklós
4个回答

11

更新 -- Google Analytics iOS SDK v3

我正在使用v3,并且没有任何问题:

我已经在AppDelegate中实现了它。在.h文件中:

#import "GAI.h"
@property (nonatomic,assign) id<GAITracker> tracker; // I'm not using ARC (assign)

.m:

#import "GAIDictionaryBuilder.h"
#import "GAIFields.h"

// GOOGLE ANALYTICS
[GAI sharedInstance].trackUncaughtExceptions = YES;
[GAI sharedInstance].dispatchInterval = 0;
tracker = [[GAI sharedInstance] trackerWithTrackingId:@"yourGAID"];

编写一个像这样的方法:

- (void) sendGoogleAnalyticsView:(NSString*)viewName{
    [tracker set:kGAIScreenName value:viewName];
    [tracker send:[[GAIDictionaryBuilder createAppView] build]];
    [[GAI sharedInstance] dispatch]; // this will force track your views.
}

旧答案:

查看此链接下面的回答,如果您按照我在此答案中所说的那样做,它一定会起作用

关于Google Analytics的另一个stackoverflow回答问题

并使用这些方法:


[GAI sharedInstance].optOut = YES;
[GAI sharedInstance].dispatchInterval = 0;
[GAI sharedInstance].trackUncaughtExceptions = YES;
    tracker = [[GAI sharedInstance] trackerWithTrackingId:@"YOUR TRACKERID"];


[tracker sendView:@"Your View name"];

[tracker sendEventWithCategory:@"YOUR CATEGORY" withAction:@"YOUR ACTION" withLabel:nil withValue:nil];

此链接下载GoogleAnalyticsiOS_2.0beta4.zip,其中包含您需要的那些类,并且它将完美地工作。请注意,Google Analytics有一个提前时间才能向您显示有关实时信息的数据。非实时数据只会在一天后显示。

3.0版的编辑:

我为您找到了一些可能有用的东西:

我们刚遇到这个问题,这已经有点过时了,所以这里是一个更新的答案。在遵循Google Analytics网站上的说明后,我们遇到的问题是,他们指示您添加以下文件: GAI.hGAIDictionaryBuilder.hGAILogger.hGAITrackedViewController.hGAITracker.hlibGoogleAnalytics_debug.a库。然而他们完全忘记了在网站上的说明中包含一个您必须包括的 libGoogleAnalyticsServices.a 库。这个库在压缩包中包含,但没有说明要在调试版本中包含它。

注意:在readme.txt中,libGoogleAnalyticsServices.a仅被称为libGoogleAnalytics.a,谷歌没有更新其文档以包括新名称或正确的说明,表明这是调试所需的。

必须包含的文件和库

GAI.h
GAIDictionaryBuilder.h
GAIFields.h
GAILogger.h
GAITrackedViewController.h
GAITracker.h
libGoogleAnalytics.a // Also know as libGoogleAnalyticsServices.a
libGoogleAnalytics_debug.a

图片描述

附加信息:

我相当确定Google尚未提供其libGoogleAnalyticsServices.a的arm64版本,这真的很烦人...自从发布Xcode 5GM以来已经过去了几周。

目前,我想只能为armv7、armv7s构建或移除Google Analytics,直到他们把头从他们的裤子里拿出来。

这里是一个iOS入门指南,用于实现它。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // 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 = 0;

  // Optional: set Logger to VERBOSE for debug information.
  [[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose];

  // Initialize tracker.
  id<GAITracker> tracker = [[GAI sharedInstance] trackerWithTrackingId:@"UA-XXXX-Y"];

}

要手动发送屏幕视图,请在跟踪器上设置屏幕字段值,然后发送该命中:

// May return nil if a tracker has not already been initialized with a
// property ID.
id tracker = [[GAI sharedInstance] defaultTracker];

// This screen name value will remain set on the tracker and sent with
// hits until it is set to a new value or to nil.
[tracker set:kGAIScreenName
       value:@"Home Screen"];

[tracker send:[[GAIDictionaryBuilder createAppView] build]];
自动屏幕测量:使用GAITrackedViewController类自动度量视图作为屏幕。使每个视图控制器扩展GAITrackedViewController并添加一个名为screenName的属性。该属性将用于设置屏幕名称字段。
//
// MyViewController.h
// An example of using automatic screen tracking in a ViewController.
//
#import "GAITrackedViewController.h"

// Extend the provided GAITrackedViewController for automatic screen
// measurement.
@interface AboutViewController : GAITrackedViewController

@end


//
// MyViewController.m
//
#import "MyViewController.h"
#import "AppDelegate.h"

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // Set screen name.
    self.screenName = @"Home Screen";
}

// Rest of the ViewController implementation.
@end

事件追踪:

链接

使用 GAIDictionaryBuilder.createEventWithCategory:action:label:value: 发送事件到 Google Analytics,并像以下示例一样发送记录:

// May return nil if a tracker has not already been initialized with a property
// ID.
id<GAITracker> = [[GAI sharedInstance] defaultTracker];

[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"ui_action"     // Event category (required)
                                                      action:@"button_press"  // Event action (required)
                                                       label:@"play"          // Event label
                                                       value:nil] build]];    // Event value

我已经尝试了这些方法,但并没有成功。我想告诉你我正在使用GoogleAnalyticsServicesiOS_3.0.zip版本,因为这是Google推荐的版本。该版本没有sendView方法。 - Anil Kothari
当我创建一个新的ID时,它会给我提供下载Google Analytics 3.0 SDK的链接。 - Anil Kothari
我正在使用2.0 beta版本,它没有问题。我不知道3.0出了什么问题。 - Magyar Miklós
我编辑了我的回答,尽力帮助你,希望对你有用!这些信息适用于3.0版本,正是你所需要的。 - Magyar Miklós
1
"[[GAI sharedInstance] dispatch]; // 这将强制跟踪您的视图":这行代码今天救了我。" - Suke
显示剩余3条评论

11

我曾遇到3.01版本的同样问题。实际上我的问题出在Google Analytics管理部分。

我为移动设备建立了一个配置文件(实际上是按网站方式设置),这个配置文件在1.x版本中起作用。但现在Google已经实施了“移动”配置文件。我相信3.x版本的移动SDK无法跟踪到“Web”配置文件。

按照这里的说明创建一个新配置文件。然后使用新的跟踪ID,它应该开始跟踪了。

注意:不要将dispatchInterval设置为0,因为其他人所建议的这样也会阻止跟踪,将其设置为1。这对我来说解决了所有问题。


1
谢谢,也在3.03上工作。根据Google的文档:“如果您想使用Google Analytics跟踪应用程序和网站,则必须使用不同的跟踪ID和单独的属性。应用程序跟踪数据只能出现在指定的应用程序报告视图中,而Web跟踪数据只能出现在指定的Web视图中。不支持替代配置,这将导致数据损坏或不完整。” https://support.google.com/analytics/answer/2587087 - Genki

1
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小时或更长时间才能看到结果。有时候,没有任何原因,显示实时数据需要花费一些时间。

有时候也会因为旧版的Google Analytics sdk而无法正常工作。要获取最新的sdk,您可以使用cocoa pod。以下是步骤:

platform :ios, '10.0'
target “GoogleAnalyticsTestAppdo
   pod 'GoogleAnalytics'
end

在您的项目目录中的pod文件中编写这些行并保存,然后安装pod。要了解如何安装Cocoa Pod,请参见以下链接:

使用Cocoa Pods导入Google Analytics iOS SDK时出错

不要写Google/Analytics,而是写GoogleAnalytics。希望它能解决问题。

0
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@protocol GAITracker;
@interface GAITrackedViewController : UIViewController {
@private
    id<GAITracker> tracker_;
    NSString *trackedViewName_;
}
@property(nonatomic, assign)id<GAITracker> tracker;
@property(nonatomic, copy)NSString *trackedViewName;
@end

Paste this code on "GAITrackedViewController.h" file
Then you can use self.trackedName = @"Some Name"; easly.

这对我来说崩溃了。我使用的是GAI 3.0.6。 - Jason McDermott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接