無埋點編碼規(guī)范
無埋點方案基于窗口回調(diào)(Window.Callback)機制桥嗤。BaseActivity中集成了自動打點相關(guān)邏輯。但由于dialog和activity實現(xiàn)機制不一樣仔蝌。為了dialog同樣能夠集成自動打點功能泛领,解決方案如下:
任何Dialog,需要繼承DDAlertDialog/DDDialog/DDV7AlertDialog。
任何PopupWindow需要繼承DDPopupWindow敛惊。
支持自動打點的控件
A.列表類
DDListView 普通listview渊鞋,使用者可以在布局中直接使用ListView標(biāo)簽,系統(tǒng)會自動將ListView 的實現(xiàn)替換成DDListView,DDListView 內(nèi)部會設(shè)置Item View的OnClickListener,并將點擊事件委托給onItemClickListener豆混。
DDExpandableListView 二級列表控件篓像,使用者可以在布局中直接使用ExpandableListView標(biāo)簽,系統(tǒng)會自動將ExpandableListView 的實現(xiàn)替換成DDExpandableListView。DDExpandableListView 內(nèi)部會設(shè)置Item View的OnClickListener,并將點擊事件委托給onGroup/ChildClickListener
B.網(wǎng)格類
DDGridView 普通GridView,使用者可以在布局中直接使用GridView 標(biāo)簽皿伺,系統(tǒng)會自動將GridView 的實現(xiàn)替換成DDGridView员辩。DDGridView 內(nèi)部會設(shè)置Item View的OnClickListener,并將點擊事件委托給onItemClickListener。
C.ViewPager
任何ViewPager 實現(xiàn)鸵鸥,只要相應(yīng)的PagerAdapter 子類實現(xiàn)DDPagerAdapter,該ViewPager 控件即支持自動打點奠滑。
D.RecyclerView
任何RecyclerView實現(xiàn),只要相應(yīng)的RecyclerView.Adapter子類實現(xiàn)DDRecyclerAdapter,該RecyclerView 支持自動打點
以上控件中嵌套其它可自動打點控件,比如DDListView,自動打點實現(xiàn)基于最內(nèi)層的自動打點控件妒穴。
請在開發(fā)過程中宋税,盡量使用支持自動打點的控件,如果使用的控件暫不支持自動打點讼油,請聯(lián)系作者(劉碩)杰赛。
不支持自動打點控件的解決方案
對于自定義ViewGroup 等不支持自動打點的情況,打點框架提供綁定數(shù)據(jù)的操作矮台。使用者可以在BaseActivity子類中通過方法configLayout將view和數(shù)據(jù)綁定乏屯,綁定之后該View下的任意子View的點擊事件的埋點數(shù)據(jù)都會指向這條數(shù)據(jù)根时。對于在非Activity中實現(xiàn)打點數(shù)據(jù)綁定,可以調(diào)用AutoPointHelper 中相應(yīng)的方法,調(diào)用之前最好調(diào)用canxxxxx()進(jìn)行綁定操作是否允許的檢查辰晕。
對于某些需要手動發(fā)送埋點蛤迎,但是同樣需要走埋點框架的情況,可以調(diào)用PointPostAction.manualPostPoint(View,Object)含友,調(diào)用該方法后替裆,會直接發(fā)送埋點,但是埋點數(shù)據(jù)的解析會走自動打點的數(shù)據(jù)配置邏輯窘问。注意:需要調(diào)用ignoreAotoPoint辆童、canIgnoreAutoPoint 忽略自動打點對指定控件的支持。
對于完全手動打點的情況(不走埋點配置平臺)南缓,使用者只需要直接調(diào)用 PointPostAction.postNlog()胸遇。
關(guān)聯(lián)數(shù)據(jù)注意
對于打點框架支持的控件,底層會通過DataStrategy獲取點擊操作對應(yīng)的數(shù)據(jù)汉形。對于自定義ViewGroup 等不支持自動打點的情況纸镊,可以通過
BaseActivity.configLayoutData (id 和數(shù)據(jù)的對應(yīng)關(guān)系)
AutoPointHelper.configLayoutData (id 和數(shù)據(jù)的對應(yīng)關(guān)系)
AutoPointHelper.ignoreLayoutData
或?qū)崿F(xiàn)DataAdapter 配置view綁定的數(shù)據(jù) (View 實例和數(shù)據(jù)的對應(yīng)關(guān)系,特別適用于用自定義ViewGroup,通過addView實現(xiàn)list效果的寫法),那么該View下的任意子View點擊操作打點日志綁定的數(shù)據(jù)都是該數(shù)據(jù)概疆。
關(guān)于布局文件
布局文件中控件id不能有重復(fù)逗威,任意控件id不能和文件名相同,同一個layout.xml中岔冀,不同include的布局中不能包含相同id的控件凯旭。
自定義ViewGroup說明
對于需要綁定數(shù)據(jù)的自定義ViewGroup,請務(wù)必實現(xiàn)DataAdapter 接口,并實現(xiàn)數(shù)據(jù)綁定方法setData及數(shù)據(jù)獲取方法getData使套。打點框架會自動獲取該自定義布局綁定的數(shù)據(jù)罐呼。
關(guān)于埋點配置
主項目assets目錄下需要放置da.cfg配置文件,這個文件與從服務(wù)器下載的配置文件相同侦高,作為默認(rèn)埋點配置嫉柴。