2011-01-09 13 views
1

私はiOSアプリケーションでGoogleアナリティクスを実装しましたが、アナリティクスには何も記録されません。私は1ヶ月間それを実行しているので、動作していない何かがあることを知っています。Googleアナリティクスのトラッキングは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 

ここは私のトラッカークラスです。注意してください、私はこれらのすべてが呼び出されることをトレースすることができ、ディスパッチが繰り返し呼び出され、 '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 

ミュシャ・グラシアス!!

答えて

1

まず、Googleアナリティクスサイトでアカウントを作成する際に指定されたウェブプロパティIDを使用して、Googleアナリティクスアカウントを開始する必要があります。

トラッキングを開始し、ディスパッチ時間を設定するには、次のコードを追加する必要があります。その後、Googleアナリティクスのオンラインアカウントでアカウントの分析数を確認できました。ここにそのための開始コードがあります。

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

また、次のコードをAppDelegateのdeallocに含めてください。

これはうまくいきます。ありがとう。

関連する問題