[Iphone] GAITrackedViewController和UITableViewController


Answers

为了清理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 
}

很好,很干净。 请享用!

Question

使用Google Analytics for iOS v2 Google建议将其GAITrackedViewController类的子类替换为UIViewController 。 我们在UITableViewController的情况下做什么?

资源

#import "GAITrackedViewController.h"

@interface AboutViewController : GAITrackedViewController



确保你所有的viewDidAppear调用[super viewDidAppear]

然后确保UITableViewController的每个子类都是myTableViewController的子类

在[myTableViewController viewDidAppear]中,实现所有其他答案。

只是补充了所有其他的好答案。 这样你就可以获得像GAITrackedViewController.h一样的好东西

以同样的方式,我确保我所有的其他UIViewController子类也是超UIViewController的子类,然后我做同样的事情。




假设他们本身没有UITableViewController的子类,我不明白你为什么不能使用他们的GAITrackedViewController,然后自己实现UITableViewDataSource和UITableViewDelegate协议。