Отслеживание Google Analytics не работает для меня на ios, и мой GANTrackerDelegate никогда не вызывается - PullRequest
1 голос
/ 09 января 2011

Я реализовал аналитику Google в своем приложении ios, но в аналитике ничего не регистрируется. Я запускаю его уже месяц, поэтому знаю, что что-то не работает.

Я добавил GANTrackerDelegate, чтобы отслеживать причину сбоя моих вызовов, но он никогда не вызывается. Я знаю, отправка вызывается. Кто-нибудь знает? Вот мой класс.

#import <Foundation/Foundation.h>
#import "GANTracker.h"

@interface trackerDelegate : NSObject<GANTrackerDelegate> {

}
@end


#import "trackerDelegate.h"

@implementation trackerDelegate

#pragma mark GANTrackerDelegate

- (void)trackerDispatchDidComplete:(GANTracker *)tracker
                  eventsDispatched:(NSUInteger)eventsDispatched
              eventsFailedDispatch:(NSUInteger)eventsFailedDispatch {
    NSLog(@"events dispatched: %d, events failed: %d", eventsDispatched, eventsFailedDispatch);
}
@end

Вот мой класс трекера. Заметьте, я могу отследить все эти вызываемые вещи, и я знаю, что dispatch вызывается неоднократно и возвращает «YES», но процедура делегата никогда не вызывается. Это может быть вещь кодирования, но я пытаюсь увидеть, сбой вызовов диспетчеризации или нет. Идентификатор, который я использую, действителен, потому что он работает для Android.

tracker.h

@interface Tracker : NSObject {

}

+ (void) startTracking;
+ (void) endTracking;
+ (void) dispatch;
+ (void) trackPageView : (NSString *) pageId;
+ (void) trackEvent : (NSString *) categoryId
     : (NSString *) actionID
     : (NSString *) labelID
     : (int) tvalue;


@end

tracker.m


#import "Tracker.h"
#import "trackerDelegate.h"

@implementation Tracker

static BOOL trackingOn = false;
static BOOL dirty = false;
trackerDelegate *tg = nil;

+ (void) startTracking
{
 if (trackingOn){
  return;
 }
 @try{
  if (!tg)
  {
   tg = [[trackerDelegate alloc] init];
  }

  [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-VALID-GOOGLEID"
              dispatchPeriod:-1
              delegate:tg];

  trackingOn = true;
 }
 @catch (NSException*)
 {
  trackingOn = false;
 }
}

+ (void) endTracking
{
  @try{
 if (trackingOn)
 {
  [[GANTracker sharedTracker] stopTracker];
 }
 trackingOn = false;
  }
  @catch (NSException *){
 trackingOn = false;
  }
}

+ (void) dispatch
{
 if (!dirty){
  return;
 }
 [self startTracking];
 @try
 {
  if (![[GANTracker sharedTracker] dispatch]) {
   trackingOn = false;
   NSLog(@"Google anaytics dispatch failed");
   return;
  }
  dirty = false;
 }
 @catch (NSException *){
  trackingOn = false;
 }
}



+ (void) trackPageView : (NSString *) pageId
{
 [self startTracking];
 @try{
  if (trackingOn){
   NSError *error;
   if (![[GANTracker sharedTracker] trackPageview:pageId
             withError:&error]) {
       trackingOn = false;
    NSLog(@"Google anaytics track pageview failed");
    return;
   }
   dirty = true;
  }
 }
 @catch (NSException *){
  trackingOn = false;
 }
}

+ (void) trackEvent : (NSString *) categoryId
     : (NSString *) actionID
     : (NSString *) labelID
     : (int) tvalue
{
 [self startTracking];
 @try
 {
  if (trackingOn){
   NSError *error;
   if (![[GANTracker sharedTracker] trackEvent:categoryId
             action:actionID
              label:labelID
              value:tvalue
             withError:&error]) 
   {
    trackingOn = false;
    NSLog(@"Google anaytics track event failed");
    return;
   }
   dirty = true;
  }
 }
 @catch (NSException *){
  trackingOn = false;
 }
}
@end

Muchas Gracias !!

1 Ответ

1 голос
/ 10 марта 2011

Прежде всего вы должны создать учетную запись Google Analytics, используя идентификатор веб-ресурса, который вы получили при создании учетной записи на сайте Google Analytics.

Затем необходимо добавить следующий код, чтобы начать отслеживание и установить время отправки. Только тогда вы сможете просматривать количество аналитики в своем аккаунте в онлайн-аккаунте Google Analytics. Вот исходный код для этого.

[[GANTracker sharedTracker]startTrackerWithAccountID:@"UA-xxxxxx-yy"
                                      dispatchPeriod:10
                                            delegate:nil];

Вы также должны убедиться, что вы включили следующий код в dealloc в AppDelegate.

[GANTracker sharedTracker] stopTracker];

Надеюсь, это будет хорошо работать. Благодарю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...