随着iOS版谷歌V2谷歌分析建议继承他们的GAITrackedViewController
类代替UIViewController
。 我们需要什么样的UITableViewController的情况下怎么办?
资源
#import "GAITrackedViewController.h"
@interface AboutViewController : GAITrackedViewController
随着iOS版谷歌V2谷歌分析建议继承他们的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
}
尼斯和清洁。 请享用!
作为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"];
}
这种overules的谷歌在同一时间有一个以上的跟踪的想法。 (我还没有需要还)。 不能容纳之后,跟踪器,它使用这只是重命名您的跟踪方法,以及使用什么都跟踪器你想要的。
#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
确保您的所有viewDidAppear调用[超级viewDidAppear]
然后确保你的UITableViewController的子类的每一个也是myTableViewController的子类
在[myTableViewController viewDidAppear],实现所有这些其他的答案。
只是补充所有其他很好的答案在那里。 这样,你得到的GAITrackedViewController.h好东西
用同样的方法我要确保我的所有其他UIViewController子类的也超的UIViewController的一个子类,然后我做同样的事情。
对于斯威夫特,你可以使用
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,然后实现UITableViewDataSource和协议的UITableViewDelegate自己。
从https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html
UIResponder:从的UITableViewController继承的UIViewController NSObject的
在可以继承GAITrackedViewController和几乎所有类型的ViewController的继承来回的UIViewController不会做任何额外的东西。