無痕埋點(diǎn)就是記錄所有的事件弟胀,需要的時候去查詢。
可分為兩種
用戶點(diǎn)擊事件
button 手勢的點(diǎn)擊喊式,這個可以hook相關(guān)的方法孵户,addtarget 等,去埋點(diǎn)岔留,通過view獲取vc名夏哭,view的層級信息(在vc的第幾個subview層級)
事件 hook的系統(tǒng)類 hook的系統(tǒng)方法
按鈕的點(diǎn)擊 UIApplication sendAction:to: from:forEvent:
手勢操作 UIGestureRecognizer initWithTarget:action: addTarget:action:
列表點(diǎn)擊 UITableView和UICollectionView setDelegate:、tableView:didSelectRowAtIndexPath:献联、collectionView:didSelectItemAtIndexPath:等
系統(tǒng)彈窗 UIAlertView setDelegate:竖配、alertView:clickedButtonAtIndex:
(2)頁面事件攔截
事件 hook的系統(tǒng)類 hook的系統(tǒng)方法
頁面事件 UIVIewController viewDidLoad 、viewWillAppear: 里逆、viewDidAppear: 进胯、viewWillDisappear:等生命周期方法:
系統(tǒng)導(dǎo)航欄返回按鈕 UINavigationController navigationBar:didPopItem:
非點(diǎn)擊事件
進(jìn)入,離開vc的信息原押,這個hook vc的相應(yīng)方法也可達(dá)到胁镐。
如何使用
需要查找某個按鈕的點(diǎn)擊,需要在相應(yīng)版本上獲取按鈕所在vc的subview層級信息诸衔,去上報系統(tǒng)中查詢盯漂。
log上報
無痕埋點(diǎn)log量是很大的,實(shí)時上傳是不可取的笨农。我的方案是就缆,后臺寫入log,wifi環(huán)境下達(dá)到一定大小上傳(2m)磁餐。
如果數(shù)據(jù)量過大沒有上傳违崇,要丟棄阿弃,在海量用戶面前,丟棄這些是無傷大雅的羞延。