69

iOS 向け Google アナリティクス v2 では、Google はGAITrackedViewControllerの代わりにクラスをサブクラス化することを提案していUIViewControllerます。UITableViewController の場合はどうすればよいでしょうか?

ソース

#import "GAITrackedViewController.h"

@interface AboutViewController : GAITrackedViewController
4

7 に答える 7

126

手動スクリーン トラッキング

GAITrackedViewController の拡張は、スクリーン ビューを追跡する 1 つの方法にすぎないことに注意してください。手動の方法も同様に簡単です。

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

参照

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

于 2013-05-02T23:31:55.833 に答える
14

Swift プロジェクトの手動トラッキング コードをクリーンアップするために、次の UIViewController拡張機能を作成しました。

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

UIViewController のプロパティを使用していないため、このように拡張機能を使用するのはおそらく適切ではありませんが、グローバル メソッドよりも便利な方法です。きれいにフォーマットされた名前の代わりにクラス名を使用してもかまわない場合は、次のように を使用しNSStringFromClass(self.dynamicType)て ViewController クラス名を取得することもできます。

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

これにより、次のコードだけで UITableViewControllers から手動追跡を追加できます。

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

素敵できれい。楽しみ!

于 2015-01-05T18:41:13.667 に答える
4

Sdk に GAITrackedTableViewController がないため、手動の画面 viev トラッキングのシンプルできちんとした実装を作成しました。

これはすでにシングルトンで簡単にアクセスできるため、GAI クラスのカテゴリを作成します。

#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

このような画面ビューを追跡するだけです

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

この種のことは、同時に複数のトラッキングを行うという Google のアイデアを示唆しています。(私はまだ必要がありませんでした)。これに対応するには、使用するトラッカーに基づいて追跡メソッドの名前を変更し、必要なトラッカーを使用します。

#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
于 2014-04-17T08:55:08.337 に答える
-1

UITableViewController 自体のサブクラスがないと仮定すると、GAITrackedViewController を使用できず、UITableViewDataSource および UITableViewDelegate プロトコルを自分で実装できない理由がわかりません。

于 2013-04-29T23:02:15.333 に答える
-1

https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewController_Class/Reference/Reference.htmlから

UITableViewController Inherits from UIViewController : UIResponder : NSObject

On は GAITrackedViewController をサブクラス化でき、UIViewController から継承する事実上すべての種類の ViewController に対して余分なことは何もしません。

于 2014-09-17T07:44:07.067 に答える