iphone - tools - GAITrackedViewController y UITableViewController
google analytics tracker (7)
Con Google Analytics para iOS v2, Google sugiere la subclasificación de su clase GAITrackedViewController
en lugar de UIViewController
. ¿Qué hacemos en el caso de UITableViewController?
#import "GAITrackedViewController.h"
@interface AboutViewController : GAITrackedViewController
Seguimiento de pantalla manual
Recuerde que extender GAITrackedViewController es solo una forma de seguir las vistas de pantalla. La forma manual es igual de fácil.
SDK v2
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// returns the same tracker you created in your app delegate
// defaultTracker originally declared in AppDelegate.m
id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
// manual screen tracking
[tracker sendView:@"Home Screen"];
}
SDK v3
#import "GAI.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
...
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// returns the same tracker you created in your app delegate
// defaultTracker originally declared in AppDelegate.m
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"];
// manual screen tracking
[tracker send:[[GAIDictionaryBuilder createScreenView] build]];
}
Referencia
https://developers.google.com/analytics/devguides/collection/ios/v2/screens#manual https://developers.google.com/analytics/devguides/collection/ios/v3/screens#manual
Asegúrese de que su llamada a viewDidAppear [super viewDidAppear]
Luego, asegúrese de que cada una de sus subclases de UITableViewController también sea una subclase de myTableViewController
en [myTableViewController viewDidAppear], implemente todas esas otras respuestas.
Solo complementando todas las otras buenas respuestas que existen. De esta forma obtienes algo tan bueno como GAITrackedViewController.h
De la misma manera, me aseguro de que toda mi otra subclase UIViewController también sea una subclase de super UIViewController y luego hago lo mismo.
Como resultado de la falta de Sdk GAITrackedTableViewController, creé una simple implementación ordenada de la pantalla manual viev tracking.
Cree una categoría para la clase GAI, ya que esto ya es simple y de fácil acceso.
#import "GAI+Tracking.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
@implementation GAI (Tracking)
- (void)trackScreenView:(NSString *)screenName
{
[self.defaultTracker set:kGAIScreenName value:screenName];
[self.defaultTracker send:[[GAIDictionaryBuilder createAppView] build]];
}
@end
Ahora solo rastrea una vista de pantalla como esta
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[GAI sharedInstance] trackScreenView:@"Counts map screen"];
}
Este tipo de idea de Google reemplaza la idea de tener más de un seguimiento al mismo tiempo. (No he tenido la necesidad todavía). Para acomodar esto, simplemente cambie el nombre de su método de seguimiento y el rastreador que utiliza, y utilice el rastreador que desee.
#import "GAI+Tracking.h"
#import "GAIFields.h"
#import "GAIDictionaryBuilder.h"
@implementation GAI (Tracking)
- (void)trackDefaultScreenView:(NSString *)screenName
{
[self.defaultTracker set:kGAIScreenName value:screenName];
[self.defaultTracker send:[[GAIDictionaryBuilder createAppView] build]];
}
@end
UITableViewController hereda de UIViewController: UIResponder: NSObject
On puede subclase GAITrackedViewController y no hacer nada adicional para prácticamente cualquier tipo de ViewController heredado de UIViewController.
En un esfuerzo por limpiar el código de seguimiento manual en mi proyecto Swift, creé la siguiente extensión UIViewController
.
extension UIViewController {
func trackScreenView(screenName: String) {
let tracker = GAI.sharedInstance().defaultTracker
tracker.set(kGAIScreenName, value: screenName)
tracker.send(GAIDictionaryBuilder.createAppView().build())
}
}
Probablemente no sea apropiado usar una extensión de esta manera, ya que no estoy usando ninguna propiedad del UIViewController, pero es una manera conveniente que se siente mejor que un método global. Si no le molesta usar su nombre de clase en lugar de un nombre muy bien formateado, incluso podría usar NSStringFromClass(self.dynamicType)
para obtener el nombre de la clase ViewController así:
extension UIViewController {
func trackScreenView() {
let tracker = GAI.sharedInstance().defaultTracker
tracker.set(kGAIScreenName, value: NSStringFromClass(self.dynamicType))
tracker.send(GAIDictionaryBuilder.createAppView().build())
}
}
Esto me permite agregar seguimiento manual desde mi UITableViewControllers con solo el siguiente código:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
trackScreenView("Detail View") //Or call this without any arguments if using the NSStringFromClass idea
}
Bonito y limpio. ¡Disfrutar!
Para Swift puedes usar
AppDelegate.appDelegateIns.defTrackerIns?.set(kGAIScreenName, value: "Enter Your Screen Name")
AppDelegate.appDelegateIns.defTrackerIns?.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject])
Incluya esto en su delegado de la aplicación
static let appDelegateIns = AppDelegate()
let gai = GAI.sharedInstance()
let defTrackerIns = GAI.sharedInstance().tracker(withTrackingId: "Your Tracking Id")
let gaDefTargetURL = "https://developers.google.com/analytics"
Suponiendo que no tengan una subclase de UITableViewController ellos mismos, no veo por qué no podría usar su GAITrackedViewController, y luego implementar los protocolos UITableViewDataSource y UITableViewDelegate usted mismo.