Evernote 分析机制学习

优秀不是偶然的,evernote 内嵌有 google analytics 分析器,一博内嵌有友盟分析器。几款口碑不错的 android 应用软件都有分析器。就来学习一下 evernote 是如何利用分析器的。

Evernote 记录的机器信息:

IsTablet: 根据屏幕尺寸和分辨率来判断设备是否具备 Tablet 能力

Locale: java.util.Locale.getDefault().toString()

Service: commerce_service

Package: AndroidManifest.xml 中定义的 package

Brand: android.os.Build.BRAND

Model: android.os.Build.MODEL

Network operator: TelephonyManager.getNetworkOperator() + " / " + TelephonyManager.getNetworkOperatorName()

Android version:  android.os.Build.VERSION.RELEASE

Evernote version: AndroidManifest.xml 中定义的 android:versionName

扫描二维码关注公众号,回复: 334980 查看本文章

Evernote revision: Enum.REVISION=unknown 

Evernote type: Enum.BUILD_TYPE=public

Internal storage: StatFs.getBlockSize*getAvailableBlocks

External storage: StatFs.getBlockSize*getAvailableBlocks

SDCardStatus: SD

 

反馈crash报告:Android应用如何反馈Crash报告

(1)主线程中设置处理程序,DefaultExceptionHandler

(2)在主Activity的onCreate(Bundle savedInstanceState) 方法中增加代码 

Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler( this.getApplicationContext() ));  

evernote 处理异常:

(1)全局处理 Thread.UncaughtExceptionHandler 的实现

(2)StackTraceElement 中包含com.google.android.apps.analytics了就交给 GoogleAnalytics 处理

(3)异常及处理类型:

  • CrashHandler
  • NullPointerException
  • restartEvernote
  • IndexOutOfBoundsException
  • SecurityException
  • IllegalStateException
  • OtherException

(4)日志:slf4j

(5)analytics 记录或发送的 evernote 内容

  • category: Exception
  • action: Evernote
  • label: NullPointerException
  • value: 0

(6)analytics 完整的记录

  • id
  • random
  • timestampCurrent
  • timestampPrevious
  • timestampFirst
  • visits: 访问次数
  • value: 
  • category
  • action
  • label
  • screen_width: 
  • screen_height: 

(7)analytics 保存

  • google_analytics.db
  • GoogleAnalyticsTracker 大于1000条后不再保存
  • 删除原来的 hits 记录

(8)发送

  • org.apache.http.message.BasicHttpEntityEnclosingRequest
  • POST

Evernote 使用举例:

(1)创建新的笔记本:createBusinessNotebook

调用:log("Generic", "businessNotebookCreated", label, 0)

label内容:

  • content://com.evernote.evernoteprovider
  • linkednotebooks
  • guid: UUID.randomUUID()
  • notebook_guid: UUID.randomUUID()
  • share_name
  • user_name: null
  • usn: 0
  • dirty: true
  • sync_mode: 1
  • business_id: 0
  • stack: 
  • uploaded: 0
  • permissions: 2304

交给 google analystics 的 action

Class category action label value
ExceptionHandler  Exception Evernote CrashHandler

0

  Exception Evernote NullPointerException 0
  Exception Evernote restartEvernote 0
  Exception Evernote IndexOutOfBoundsException 0
  Exception Evernote SecurityException 0
  Exception Evernote IllegalStateException 0
  Exception Evernote OtherException 0
BillingActivity Generic BillingActivity Billing pending 0
  Generic BillingActivity Billing already purchased 0
BillingService Generic BillingActivity Evernote server returned successful response code

0

  Generic BillingActivity Evernote server returned error response code 0
  Generic BillingActivity Evernote server returned un-successful response code 0
  Generic BillingActivity Exception occurred while communication with evernote server,setting alarm 0
  Generic BillingActivity Evernote server returned pending response code,setting alarm 0
EvernoteService Generic businessNotebookCreated {Notebook} 0
  Login failure ... 0
  Login failure exception 0
  Login failure throwable 0
  Login reaunthenticate success 0
  Register success createUser 0
  Register failure ... 0
  Register failureAll ... 0
  Register failure createUserEx 0
  Login login success 0
  Login failure ClientUnsupported 0
  Login login failure 0
  ResetPassword failure ... 0
  Login logout success 0
SyncService Exception SyncService-updateQuota quota-notification-95 0
  Exception SyncService-updateQuota quota-notification-75 0
  Exception SyncService-updateQuota quota-notification-50 0
FeatureDiscoveryPromo ButtonClick FeatureDiscoveryPromo HidePromo 1
  ButtonClick FeatureDiscoveryPromo RemindLater 1
  ButtonClick FeatureDiscoveryPromo ActivateButton 1
  Generic FeatureDiscoveryPromo BackPressed 1
UserSetupActivity Generic setupUser failure 0
  Generic setupUser alreadyPreactivated 0
  Generic setupUser success 0
LandingActivity Show ... ShowOneClickRegistration 0
  Register failure registrationUrls 0
  Login failureLoadingDialog ... 0
  Register success registration 0
RegistrationFragment Show PopulateCreateEmail null 0
  Register submit attempt 0
  Register failure emailValidation 0
  Register failure emailExists 0
  Register failure usernameValidation 0
  Register failure usernameExists 0
  Register failure passwordValidation 0
  Register failure networkUnreachable 0
  Register checkUsername success 0
  Register checkUsername failure 0
  Register failure registration 0

 

猜你喜欢

转载自cnmqw.iteye.com/blog/1789410