上一篇我們集成了環(huán)境透葛,這一篇主要將如何使用Crashlytics 進(jìn)行數(shù)據(jù)統(tǒng)計(jì).
1.首先我們嘗試著制造一次崩潰
直接上代碼
import UIKit
import Crashlytics
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib.
let button = UIButton(type: .roundedRect) button.frame = CGRect(x: 20, y: 50, width: 100, height: 30) button.setTitle("Crash", for: [])
button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside) view.addSubview(button)</a>
}
@IBAction func crashButtonTapped(_ sender: AnyObject) {
Crashlytics.sharedInstance().crash()
}
}
所以我們點(diǎn)擊了按鈕之后,就會(huì)觸發(fā)崩潰事件.
[注] :但是征绎,在崩潰之后,崩潰信息并不會(huì)立刻上傳到Fabric!
我們需要在網(wǎng)絡(luò)正常的狀態(tài)下磨取,重新啟動(dòng)App. 這樣人柿,崩潰信息就會(huì)成功上傳到Fabric平臺(tái). 過(guò)幾分鐘,你就可以在Fabirc平臺(tái)看到崩潰信息了.
2.然后讓我們看一下崩潰信息
會(huì)看到類(lèi)似圖中的崩潰信息. 可以看到Fabric 這個(gè)統(tǒng)計(jì)界面還是做得很全面的. 崩潰/異常的增長(zhǎng)率忙厌,影響到的用戶(hù)凫岖,以及每天的情況,都有統(tǒng)計(jì). 還可以對(duì)issue 進(jìn)行過(guò)濾.
各個(gè)issue出現(xiàn)的版本范圍逢净、次數(shù)哥放,也都有統(tǒng)計(jì).
點(diǎn)擊具體的issue條目. 我們會(huì)進(jìn)入該條issue的分析界面.
上部分是一些數(shù)據(jù)的統(tǒng)計(jì)
下部分是我們關(guān)注的,問(wèn)題是如何產(chǎn)生的呢爹土?
從這里可以看到具體的堆棧信息甥雕,可以發(fā)現(xiàn)是由于AnimationAlertController.swift 的第35行的showWithAnimation方法出現(xiàn)了問(wèn)題導(dǎo)致的崩潰.
這時(shí)我們就可以去代碼中看一看,是哪里出現(xiàn)了漏洞.
當(dāng)然胀茵,你也可以將這份log download下來(lái)社露,仔細(xì)分析.
3.收集用戶(hù)信息
點(diǎn)擊上圖中的 View all sessions, 還可以查到具體的每一個(gè)崩潰的信息琼娘,如果你收集了用戶(hù)信息的話(huà)峭弟,其中就會(huì)包含用戶(hù)的信息. 因?yàn)橛泻芏鄦?wèn)題是需要用戶(hù)的ID來(lái)進(jìn)行追蹤的附鸽,所以收集用戶(hù)信息還是很有必要的.
那如何收集用戶(hù)信息呢?
上代碼~
Crashlytics.sharedInstance().setUserEmail("user@fabric.io")
Crashlytics.sharedInstance().setUserIdentifier("12345")
Crashlytics.sharedInstance().setUserName("Test User")
只要在Crashlytics 初始化完成后
Fabric.with([Crashlytics()])
調(diào)用上面的三行代碼就可以啦~
是不是很容易用~
那今天先寫(xiě)到這里瞒瘸,明天會(huì)繼續(xù)和大家講怎么在Crashlytics中 加一些自定義的Log信息.
晚安~