跟踪用户浏览iOS应用程序UI所需的时间

时间:2017-06-26 19:56:56

标签: ios cocoa-touch time

我想测量用户在我的应用中执行某些操作需要多长时间(以秒为单位)。一些示例是登录,按某个页面上的按钮等。

我正在使用NSTimer。我在特定页面的viewDidLoad中启动它,并在我想要测量的点停止它。

我还想测量某些事情的累积时间。我想在登录屏幕上启动计时器,然后继续计时器,直到用户到达下一个视图控制器并单击某个按钮。

我不知道该怎么做。应该在我的app委托中创建一个全局变量?或者还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:3)

不需要NSTimer,您只需记录开始时间并将其与停止时间进行比较。尝试使用一个小帮助程序类,如:

class MyTimer {

    static let shared = MyTimer()

    var startTimes = [String : Date]()

    func start(withKey key: String) {
        startTimes[key] = Date()
    }

    func measure(key: String) -> TimeInterval? {
        if let start = startTimes[key] {
            return Date().timeIntervalSince(start)
        }

        return nil
    }

}

要使用它,只需在开始长时间运行的任务之前调用start(withKey :)。

    MyTimer.shared.start(withKey: "login")

执行需要一段时间的事情,然后在完成后调用measure(key :)。因为MyTimer是一个单例,所以可以从代码中的任何地方调用它。

    if let interval = MyTimer.shared.measure("login") {
        print("Logging in time: \(interval)")
    }

如果您正在使用多个线程,您可以为此添加一些线程安全性,但它应该在简单方案中工作。