Upload
koji-lin
View
3.503
Download
5
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Services you can use to monitor and analyze
mobile appKoji Lin @ Taipei GTUG
About me
● koji lin○ http://twitter.com/kojilin
● Engineer, Cubie Inc.
● The Organizer of JavaWorld@TW○ http://www.javaworld.com.tw
● The Organizer of Taiwan Java User Group○ http://twjug.org
Cubie Messenger
Outline
● Why?
● Analytics Platform
● A/B Test
● App Crash Report
● Distribute Beta Test
Why?
開發
使用
修改
使用
使用
❤
使用
● 提高相關功能的使用率
● 黏著度更高
● 主動與更多朋友分享
Every change brings...
Every change brings...
● 功能越改越...
● 使用者抱怨
● 更高的移除率
回饋
修改
回饋
使用開發
除了用戶主動回饋
我們更需要數據來分析
??????????
Mobile Analytics
What we want to know?
● Retention
○ 多少人會在一段時間後會再回來使用
● Conversion rates
○ 哪些流程使用者在中途就不想完成?
● 新功能的使用狀況
● 改版是否造成不好的影響
● 以上都還要能搭配各種分類條件
Mobile Analytics
● In-House Product
● Google Analytics
● Flurry
● Mixpanel
In-House Product
In-House Product
● 依照自己的需求客製
In-House Product
● 依照自己的需求客製
● 容易缺乏各式文件和資料
● 我們有更多更重要的功能得去做
● 提供服務的通常更好,更專業且更多功能
● ...其它更多缺點
In-House Product
● 依照自己的需求客製
● 容易缺乏各式文件和資料
● 我們有更多更重要的功能得去做
● 提供服務的通常更快,更專業且更多功能
● ...其它更多缺點
Google Analytics
● Google Analytics Mobile
○ SDK for iOS, Android(v2 beta)
● 需要較多過程,步驟來完成報表
○ Cohort Analytics
○ Segmentation
○ 透過 Custom Var 的方式來完成
Flurry
● 從 2008 年開始
○ 4個 android app 中就有一個有裝
● Sessions / Frequency of Use
● Estimate Gender / Age / Personas
● Segementation
● Funnel
● 免費!!
● Demo
Install Flurry
@Overrideprotected void onStart(){
super.onStart();FlurryAgent.onStartSession(this, "YOUR_API_KEY");
} @Overrideprotected void onStop(){
super.onStop();FlurryAgent.onEndSession(this);
}
Log Event in Flurry
Map<String, String> params = new HashMap<String, String>();
// Capture author infoparams.put("Author", "John Q");
// Capture user statusparams.put("User_Status", "Registered");
FlurryAgent.logEvent("Article_Read", params);
Mixpanel
● From Y Combinator
● Real-time
● Cohort Analysis
● Funnel
● Retention
● 隨時想看什麼就看什麼
● Demo
Install MixPanel
MixpanelAPI mixpanel = MixpanelAPI.getInstance(context, "YOUR_API_TOKEN");
Track Event in MixPanel
JSONObject properties = new JSONObject();properties.put("gender", "male");properties.put("age", 20);mixpanel.track("register", properties);
A/B Test
Why A/B Test?
A: 到底決定哪一種比較好?
B: 上面比較好,不然版面太亂
C: 下面比較好, 不然沒有人知道這個功能
D: 可是...
Why A/B Test?
A: 到底決定哪一種比較好?
B: 上面比較好,不然版面太亂
C: 下面比較好, 不然沒有人知道這個功能
D: 可是...
10 分鐘後
B: 還是上面比較....
A: #!@!....
別再吵了,直接試試看
A/B Test
A/B Test
35%25%
A/B Test
● Layout
○ 消極的顯示? 積極的顯示?
● Workflow
○ 更多步驟? 減少步驟? 順序?
● Text
○ 詳細一點? 簡述一點? 柔性一點?
● Color
○ 典型的綠色紅色按鈕範例
A/B Test
● 幫使用者註冊一個UUID
● 挑選一定比例的使用者當測試用戶
○ 使用固定的UUID去計算,讓每次結果相同
● 送出事件
● 在後台統計
○ 依照 test group 分開資料
Android First
A/B Testing
New Features
Easy to publish
Android First
A/B Testing
New Features
Easy to publishReviewing......
所以 A/B Test 就這樣?
● A/B Test 是一門不太簡單的學問
○ 測試期間要多久?
○ 應該設定"多少/哪些"用戶當對照?
○ 局部優化?徹底大改?
○ 先做 A/A Test ?
○ ...其他
所以 A/B Test 就這樣?
● A/B Test 是一門不太簡單的學問
○ 測試期間要多久?
○ 應該設定"多少/哪些"用戶當對照?
○ 局部優化?徹底大改?
○ 先做 A/A Test ?
○ ...其他
from http://visualwebsiteoptimizer.com/split-testing-blog/seven-ab-testing-mistakes-to-stop-in-2013/
HiPPO Highest Paid Person’s Opinion
Reference
1. http://en.wikipedia.org/wiki/A/B_testing
2. http://circa.cs.ualberta.ca/index.php/CIRCA:
A/B_Testing
3. http://visualwebsiteoptimizer.com/
4. http://www.clickz.
com/clickz/column/1704390/a-b-testing-
mathematically-disinclined
Some A/B Test Services
● clutch.io
● arise.io
● Amazon A/B Testing Service
● PATHMAPP ( iOS)
App Crash Report
App Crash Report
● Google Play
Google Play
App Crash Report
● Google Play
● ACRA
ACRA
Install ACRA
● add jar
● add permissions○ android.permission.INTERNET
● add code in class extends Application
ACRA.init(this);
ACRA
● Google Docs○ Don't and now you can't
● Acralyzer
● ACRA Reporter○ Google App Engine
○ Android widget
● BugSense, HockeyApp, Zubhium
App Crash Report
● Google Play
● ACRA
● Crittercism
Crittercism
Install Crittercism
● add jar
● add permissions○ android.permission.INTERNET
○ android.permission.READ_LOGS
○ android.permission.GET_TASKS
● add code
Crittercism.init(getApplicationContext(), appId);
Crittercism● Crash Reports
● Crash Trends (Premium)
● Handled Exceptions (Premium)
● Connect JIRA/GitHub
● Demo
Crittercism.logHandledException(exception);
App Crash Report
● Google Play
● ACRA
● Crittercism
● Crashlytics
Crashlytics
● Crash Reports(Issues)
Crashlytics
● Crash Reports(Issues)
● 界面很炫
● 年初被 Twitter 買了
● Connect to JIRA / HipChat / Redmine...etc
● Demo
Crashlytics
● Crash Reports(Issues)
● 界面很炫
● 年初被 Twitter 買了
● Connect to JIRA / HipChat / Redmine...etc
● Demo
Coming Soon
Distribute Beta Test
Testflight
● iOS
● Android(beta)
iOS 上做 beta test
1. 收集使用者的UDID
2. 將 UDID 加到 Distribution Provisioning Profie
3. 打包成 IPA 將檔案丟給測試人員
4. 測試人員使用跟裝置同步的電腦安裝
iOS 上做 beta test
1. 收集使用者的UDID
2. 將 UDID 加到 Distribution Provisioning Profie
3. 打包成 IPA 將檔案丟給測試人員
4. 測試人員使用跟裝置同步的電腦安裝
Android 上做 beta test
1. 產生 apk 將檔案丟給測試人員
2. 直接安裝測試
Android 上做 beta test
1. 產生 apk 將檔案丟給測試人員
2. 直接安裝測試
??
Testflight
● 方便管理並了解測試狀況
● 搭配 SDK 可以有更多進階功能
● Demo
Thank you!!
Q&A