Я реализовал аналитику 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 !!