Google Analytics в iOS (не работает)

Я пытаюсь внедрить аналитику Google. Не могли бы вы, ребята, помочь мне.

-(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 я должен загрузить в настоящее время, я загрузил google GoogleAnalyticsServicesiOS_3.01.zip(рекомендуется), так как я не хочу работать с бета-версией GoogleAnalyticsiOS_2.0beta4.zip

Ответы

Ответ 1

UPDATE - SDK для Google Analytics для iOS 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

и используйте следующие методы:

[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 получила время, чтобы показать вам информацию о реальном времени. И не в реальном времени данные будут отображаться только через день после

EDIT для версии 3.0:

Я нашел некоторые полезные вещи для вас:

Мы только что столкнулись с этой проблемой, и это немного устарело так что вот обновленный ответ. Вопрос, который мы имели после инструкции на веб-сайте Google Analytics, они добавьте следующие файлы GAI.h, GAIDictionaryBuilder.h, GAILogger.h, GAITrackedViewController.h, GAITracker.h и libGoogleAnalytics_debug.a библиотека. Что они полностью забывают включить на веб-сайте инструкции, где вы должны включить библиотеку libGoogleAnalyticsServices.a. Это включено в zipped download, но нет инструкций, указывающих на включение это в отладочной версии.

Примечание. В readme.txt libGoogleAnalyticsServices.a просто указано как libGoogleAnalytics.a Google не обновили свои документацию, чтобы включить новое имя или правильные инструкции, которые укажите, что это требуется при отладке.

Файлы и библиотеки, которые больше всего будут включены

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

enter image description here

плюс информация:

Я уверен, что Google еще не предоставил версию arm64 libGoogleAnalyticsServices.a, что очень раздражает... у него есть были недели с тех пор, как публика выпустила Xcode 5GM.

На данный момент, я думаю, только строить для armv7, armv7s или удалить google аналитики, пока они не выйдут из своих штанов.

Вот Руководство по началу работы с 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

Отслеживание событий:

ссылка

Чтобы отправить событие в Google Analytics, используйте GAIDictionaryBuilder.createEventWithCategory: действие: label: значение: и отправьте хит, как в этом примере:

// 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

Ответ 2

У меня была та же проблема с 3.01. Моя проблема была фактически в разделе администрирования Google Analytics.

У меня была настройка профиля для мобильных устройств (которая фактически была настроена так, как если бы это был сайт), который работал с версией 1.x. Однако, похоже, Google теперь внедряет "мобильные" профили. Я считаю, что SDK 3.x для мобильных устройств не может отслеживать профили "Web".

Создайте новый профиль, следуя инструкциям здесь. И затем используйте новый идентификатор отслеживания, и он должен начать отслеживать.

Примечание. Не устанавливайте значение dispatchInterval равным 0, как и другие, это также предотвратило отслеживание, установив его в 1. Это исправило все для меня.

Ответ 3

В файле 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 часов или более, чтобы увидеть результат. Иногда требуется время для отображения данных в реальном времени без каких-либо причин.

Иногда он также не работает из-за старого SDK Google Analytics. Для получения последней версии sdk вы можете использовать cocoa pod. вот процедура:

platform :ios, '10.0'
target "GoogleAnalyticsTestApp" do
   pod 'GoogleAnalytics'
end

Запишите эти строки в свой файл pod в каталог проекта и сохраните его. затем установите pod. Чтобы узнать, как установить cocoa pod, см. Ссылку:

Ошибка импорта SDK Google Analytics iOS с помощью cocoa Pods

Не пишите Google/Analytics. Напишите GoogleAnalytics. Надеюсь, что это решит проблему.

Ответ 4

#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.