2011-01-09 25 views
1

我在我的ios應用中實施了谷歌分析,但是沒有任何東西會記錄到分析。我已經運行了一個月,所以我知道有些東西不起作用。谷歌Analytics(分析)跟蹤對我來說不適用於ios,我的GANTrackerDelegate永遠不會被調用

我添加了一個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',但委託例程永遠不會被調用。這可能是一個編碼問題,但我試圖查看調度調用是否失敗。我使用的ID是有效的,因爲它適用於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

首先,您應該使用在Google Analytics網站中創建帳戶時向您提供的網絡媒體資源ID啓動Google Analytics帳戶。

然後您必須添加以下代碼才能開始跟蹤並設置調度時間。然後,只有您可以在Google Analytics在線帳戶中查看您帳戶中的分析次數。這是啓動代碼。

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

您還應該確保,您已將以下代碼包含在AppDelegate的dealloc中。

[GANTracker sharedTracker] stopTracker]; 

希望這會工作正常。謝謝。

相關問題