當你發(fā)布一個應用程序或更新時,你經(jīng)常希望獲得新用戶和/或更多的收益。 Google Play Developer Console一直為你追蹤這些指標,但無論你是看到你喜歡的數(shù)字還是不喜歡的數(shù)字,但是你仍然不知道是什么驅使的他們。
Analytics,一般情況下,我使用它收集使用和錯誤數(shù)據(jù),它能幫助你了解痛點和你的應用程序的用戶,讓您專注于清除障礙和更好地服務于用戶的需求。反過來,這也會提高用戶滿意度,產生更高的使用率和新用戶,以及每個用戶的更高收入。
特別是,Google Analytics配備了一個Android SDK,網(wǎng)絡接口已經(jīng)被許多企業(yè)用戶所熟知,使它成為一個實現(xiàn)分析策略的強大工具。在Android開發(fā)者網(wǎng)站上有一節(jié)專門講述了它的特點。這是一款非常強大的工具,它可以給你關于你的用戶的“開箱即用的”數(shù)據(jù)。讓我們先暫時撇開實施細節(jié),先關注如何衡量和尋找……
崩潰——如果你沒有存在這個問題,定期在Google Play Developer Console上檢查異常和ANRS報告。
捕捉異常——有一些異常是預期要發(fā)生的,但是你應該了解它們,因為可能會在你的應用程序中顯示一個潛在的問題。
服務器通信——對于提供一個快速,平穩(wěn),高效的應用程序,背景同步是至關重要的。你調用服務器需要多久呢?你的調用以IO 異常結束或響應時間超過10秒的情況占多數(shù)比例呢?你的用戶在使用WiFi,4G,3G和2G的比例有多大呢?關系到本地緩存和服務器同步發(fā)生具體異常(例如SQLExceptions)的頻率有多少呢?
定位、定位、定位——對于你捕捉到的異常,他們是否是特別針對對于一個給定的時區(qū)和語言而發(fā)生?Android是當今世界上最流行的移動平臺,所以你不能假設你的用戶生活都處在你所在的國家,說著你所說的語言。
搜索——用戶是根據(jù)你所期望的方式搜索嗎?在他們查詢過程中,他們做出錯誤的拼寫時,適當?shù)慕ㄗh可以減少錯誤拼寫嗎?至少,你應該追蹤你的用戶的交互活動,他們在每個畫面花費多長時間,以及每個活動之間的流程,以確定以下問題。
畫面UI層次結構——你ActionBar真的需要這些圖標嗎?你是否應該或高或低地移動屏幕上的一個按鈕(特別是需要較長滾動的屏幕)?
UX流程——如果很多用戶需要經(jīng)過屏幕A -> B -> C -> D,是否需要為他們設定一個A -> D的屏幕過渡方式?此外,你可以考慮具體的追蹤來幫助你發(fā)現(xiàn)潛在的問題。
慢畫面初始化——你在onCreate中加載的一些數(shù)據(jù),是否應移出主線程?
滾動——如果你有很長的屏幕,你知道你的用戶需要滾動多少嗎?你為你的用戶設計的數(shù)據(jù)加載速度夠快嗎?收集了解UI問題的數(shù)據(jù)也將幫助你了解你的用戶。
未發(fā)現(xiàn)的功能——你可以通過著眼于結合用戶評論和點擊數(shù)據(jù)實現(xiàn)評估用戶未發(fā)現(xiàn)的功能。
未使用的功能——你可以通過著眼于結合點擊數(shù)據(jù)和一個特定的畫面時間實現(xiàn)評估未使用的功能。下一步,根據(jù)基本的理解通過分組劃分用戶段,例如重度使用者,中度使用者和罕見的用戶。對于每一段,你需要自問的基本問題是:
你的用戶使用該應用程序有多頻繁?
他們在哪里花費了時間?
最常見的界面流程是什么?
是否有某些功能未被發(fā)現(xiàn)?
是否有某些功能未被使用?
核心原則是為你的用戶創(chuàng)建一個豐富、有意義的體驗,在正確的時間提供正確的信息。一旦你了解了你的用戶,你可以考慮圍繞廣告、內容和個性化方面設計有針對性的策略。例如,你可以:
專注于某一段和你的應用程序廣告等。
當進行了某些特定的行為時,在你的主屏幕上提供上下文幫助,這是游戲在玩家低等級時經(jīng)常采用的策略。
寫下你的假設——用你的詳細的路線圖,史詩或簡單的長期目標以呈現(xiàn)你對你的用戶的假設。
為每個假設分配風險——你的依賴于這一假設的長期目標中有多少是真實存在的?
考慮你如何能確定每個假設的有效性——開始于你的最危險的假設,考慮從你的應用程序中收集的數(shù)據(jù)以幫助你確定或消除每個假設
從現(xiàn)在開始,設身處地為你自己考慮六個月——想象一下,到那時,你的應用程序是完全無bug,有足夠的用戶來證明你的投資將產生一輪又一輪的大發(fā)展。你的各種選項是什么?你需要知道哪一個是最好的?
部分功能的實現(xiàn)分析——由于太容易對功能急于求成,而忘記分析。然而,你怎么才能衡量你的新功能的影響?
重復你的分析——當你獲得對當前用戶的相關認知后,毫無疑問你會問自己很多關于他們的問題。就像你重復使用你的應用程序,同時重復你的分析。是的,收集數(shù)據(jù)是為了更好地服務于你的用戶,但不要忘記你的用戶的隱私,所以匿名化你收集到的數(shù)據(jù)。特別是,請確保你遵守開發(fā)者分發(fā)協(xié)議的第4.3節(jié)。
一些數(shù)據(jù),如用戶的位置是特別敏感的,所以你可能想把你的數(shù)據(jù)集分成兩組。第一組不需要用戶的同意就可以收集,它將使用匿名的IP,并且是一般的事物信息,如一般用戶細分、點擊事件和屏幕。第二組需要用戶的同意,它不使用匿名的IPs,并且可能包括諸如用戶位置等信息。
定義一個接口——為了獲得最大的靈活性,為你的分析方法創(chuàng)建一個接口,一個一般的實現(xiàn)類(從你的代碼中調用),一個實現(xiàn)類用于你所選擇使用的提供程序。通過這種方式,你應該決定改變分析提供程序,你可以簡單地為新的提供程序添加一個實現(xiàn)類,并改變你的一般實現(xiàn)類的代碼用于替代這個提供程序。
為屏幕和事件定義枚舉——每個枚舉分別為畫面或事件發(fā)送完整的數(shù)據(jù)到分析服務,使你的應用程序中的分析代碼非常簡潔和易于維護。
開發(fā)設置——分析也需要被測試,所以,為你的開發(fā)構建使用不同的分析ID。你一旦在你的應用程序中完成分析,確保你的業(yè)務團隊能夠訪問開發(fā)分析數(shù)據(jù),以確保他們能理解它。
A/B測試——完成這項測試的一種方式是在毫秒系統(tǒng)中對當前時間使用模數(shù)函數(shù),以確定用戶測試組ID,然后將它保存在一個共享的首選字段里。這應該在你的應用程序類onCreate方法中完成,僅進行一次。例如,如果你要發(fā)送90%的用戶到ID1的組和10%的用戶到ID2組,你會如下編寫代碼:int userTestingGroupId = System.currentTimeMillis()%10 != 0? 1:2;
親自做可用性測試——這可以通過你的應用程序的一個原型完成。親自進行可用性測試是你的第一個調用端口,用以識別UI問題。
做手工和自動化測試——應用程序測試是你的第一個調用端口,用于識別函數(shù)問題。
在Google Play Developer Console上使用 α/β發(fā)行渠道——在你的所有用戶體驗它們之前,最好能捕捉功能和UI問題。你可能會考慮分割你的alpha/beta渠道以匹配特定的用戶細分,例如只有重度使用者可以成為alpha測試者,只有中度使用者可以成為beta測試者。