web-dev-qa-db-fra.com

GAITracked uiViewController et UITableViewController

Avec Google Analytics pour iOS v2, Google suggère de sous-classer leur classe GAITrackedViewController à la place de UIViewController. Que faisons-nous dans le cas de UITableViewController?

source

#import "GAITrackedViewController.h"

@interface AboutViewController : GAITrackedViewController
69
palmi

Suivi manuel de l'écran

N'oubliez pas que l'extension de GAITrackedViewController n'est qu'une façon de suivre les vues d'écran. La voie manuelle est tout aussi simple.

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]];
}

Référence

https://developers.google.com/analytics/devguides/collection/ios/v2/screens#manualhttps://developers.google.com/analytics/devguides/collection/ ios/v3/screens # manual

126
dmzza

Dans un effort pour nettoyer le code de suivi manuel dans mon projet Swift, j'ai créé l'extension UIViewController suivante.

extension UIViewController {
    func trackScreenView(screenName: String) {
        let tracker = GAI.sharedInstance().defaultTracker
        tracker.set(kGAIScreenName, value: screenName)
        tracker.send(GAIDictionaryBuilder.createAppView().build())
    }
}

Il n'est probablement pas approprié d'utiliser une extension de cette façon, car je n'utilise aucune propriété de UIViewController, mais c'est un moyen pratique qui se sent mieux qu'une méthode globale. Si cela ne vous dérange pas d'utiliser votre nom de classe au lieu d'un nom bien formaté, vous pouvez même utiliser la NSStringFromClass(self.dynamicType) pour obtenir le nom de la classe ViewController comme suit:

extension UIViewController {
    func trackScreenView() {
        let tracker = GAI.sharedInstance().defaultTracker
        tracker.set(kGAIScreenName, value: NSStringFromClass(self.dynamicType))
        tracker.send(GAIDictionaryBuilder.createAppView().build())
    }
}

Cela me permet d'ajouter le suivi manuel de mes UITableViewControllers avec juste le code suivant:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    trackScreenView("Detail View")  //Or call this without any arguments if using the NSStringFromClass idea 
}

Agréable et propre. Prendre plaisir!

14
Keith

Comme le Sdk n'a pas de GAITrackedTableViewController, j'ai créé une implémentation simple et soignée du suivi manuel de l'écran.

Créez une catégorie pour la classe GAI, car elle est déjà unique et facilement accessible.

#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

Maintenant, suivez simplement une vue d'écran comme celle-ci

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [[GAI sharedInstance] trackScreenView:@"Counts map screen"];
}

Ce genre d'overules Googles idée d'avoir plus d'un suivi en même temps. (Je n'en ai pas encore eu besoin). Pour accepter cela, renommez simplement votre méthode de suivi après quel tracker il utilise et utilisez le tracker que vous souhaitez.

#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
4
esbenr

Assurez-vous que tous vos appels viewDidAppear [super viewDidAppear]

Assurez-vous ensuite que chacune de vos sous-classes de UITableViewController est également une sous-classe de myTableViewController

dans [myTableViewController viewDidAppear], implémentez toutes ces autres réponses.

Complétant simplement toutes les autres bonnes réponses. De cette façon, vous obtenez quelque chose d'aussi bon que GAITrackedViewController.h

De la même manière, je m'assure que toutes mes autres sous-classes UIViewController sont également une sous-classe de super UIViewController et ensuite je fais la même chose.

1
user4951

Pour Swift vous pouvez utiliser

AppDelegate.appDelegateIns.defTrackerIns?.set(kGAIScreenName, value: "Enter Your Screen Name")
        AppDelegate.appDelegateIns.defTrackerIns?.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject])

Incluez ceci dans votre délégué d'application

static let appDelegateIns = AppDelegate()
    let gai = GAI.sharedInstance()
    let defTrackerIns = GAI.sharedInstance().tracker(withTrackingId: "Your Tracking Id")
    let gaDefTargetURL = "https://developers.google.com/analytics"
0
Varun Kumar