在 iOS 版 Google Analytics v2 中,Google 建议我们将 GAITrackedViewController
类子类化来替代 UIViewController
。那么,在 UITableViewController
的情况下该怎么办呢?
#import "GAITrackedViewController.h"
@interface AboutViewController : GAITrackedViewController
在 iOS 版 Google Analytics v2 中,Google 建议我们将 GAITrackedViewController
类子类化来替代 UIViewController
。那么,在 UITableViewController
的情况下该怎么办呢?
#import "GAITrackedViewController.h"
@interface AboutViewController : GAITrackedViewController
请记住,扩展GAITrackedViewController只是跟踪屏幕视图的一种方式。手动方式同样简单。
- (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"];
}
#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
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
}
干净整洁。祝您愉快!
#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"];
}
#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
对于Swift,您可以使用
AppDelegate.appDelegateIns.defTrackerIns?.set(kGAIScreenName, value: "Enter Your Screen Name")
AppDelegate.appDelegateIns.defTrackerIns?.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject])
将此代码包含在您的应用程序委托中
static let appDelegateIns = AppDelegate()
let gai = GAI.sharedInstance()
let defTrackerIns = GAI.sharedInstance().tracker(withTrackingId: "Your Tracking Id")
let gaDefTargetURL = "https://developers.google.com/analytics"
UITableViewController
就不会加载任何行了。 :(GAITrackedViewController
的没有可见的 @interface 声明选择器 'initWithStyle:'。UITableViewController 继承自 UIViewController:UIResponder:NSObject
可以从 GAITrackedViewController 进行子类化,并且不需要为几乎任何继承自 UIViewController 的 ViewController 做任何额外的工作。
viewWillAppear
中调用sendView
?在viewDidAppear
中调用会更好吗? - VadimviewDidAppear
中完成,GAITrackedViewController.h
的文档也是这么说的。 - db42[tracker send:[[GAIDictionaryBuilder createAppView] build]];
- micnguyen