`

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

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

 

 

 

 

分享到:
评论

相关推荐

    evernote-clone:试图克隆Evernote

    在"evernote-clone"中,可以找到关于如何集成用户认证机制的代码。 2. 数据存储和同步: Meteor 支持MongoDB数据库,因此开发者需要理解如何设计数据模型,以及如何实现数据的增删改查和实时同步。 3. UI/UX 设计...

    巧用互联网平台提高学生学习效率.zip

    Evernote则是一个强大的笔记应用,可以帮助整理和归档学习资料。这些工具让学习变得更加高效。 远程教育也得益于互联网平台的发展。Zoom、Microsoft Teams等在线会议软件使得教师可以进行实时授课,学生在家也能...

    evernix:基于Evernote的个人信息维护者

    对于开发者而言,深入研究Evernix的源代码将有助于学习如何与Evernote API交互,以及如何利用Java进行桌面应用的开发。对于普通用户,了解和使用Evernix能提升他们在Evernote中的工作效率,更好地管理个人知识库。

    UmbrellaNote:免费,开源的Evernote替代品

    通过以上分析,我们可以看到UmbrellaNote不仅是一个免费的Evernote替代品,更是一个集开源、个性化、安全和高效于一体的笔记工具。无论是个人学习、工作记录还是团队协作,UmbrellaNote都能提供强大的支持。对于那些...

    android学习笔记(三、便签demo改进)

    对于源码分析,我们可以参考其他优秀的开源便签应用,比如Evernote或Google Keep,学习它们的实现方式,尤其是如何处理复杂的功能如标签系统、提醒设置等。理解这些功能背后的逻辑和代码结构,能帮助我们更好地改进...

    2021届甘肃省民勤县第一中学高二上学期化学文期中试题答案.doc

    在化学学习中,理解并掌握反应机制、物质性质和化学方程式是非常重要的,这些在选择题和非选择题中都有所体现。 在IT行业中,我们也可以借鉴这种学习策略。例如,通过在线编程挑战或技术问答来检验自己的技能水平,...

    PinboardEvernoteSync-源码.rar

    6. **权限与认证**:用户需要授权同步工具访问他们的Pinboard和Evernote账户,因此源码中会涉及到OAuth或其他身份验证机制,以确保数据的安全性。 7. **多线程与并发控制**:为了提高性能,源码可能采用多线程或者...

    Laverna是一个JavaScript笔记应用提供Markdown编辑器和加密支持

    Laverna是一款基于JavaScript开发的开源笔记应用,它旨在为用户提供类似于Evernote的高效笔记管理体验,但同时强调了隐私和数据安全性。Laverna的一大特色是内置的Markdown编辑器,使得用户能够轻松地创建、格式化和...

    课堂笔记和笔记软件.rar

    3. 代码型笔记软件:如Jupyter Notebook、Typora,适合编程、数据分析、科学计算等场景,支持Markdown语言和实时预览。 4. 协作型笔记软件:如Google Keep、TiddlyWiki,允许多人共享和协作编辑笔记。 三、选择笔记...

    国内外知识管理软件比较(精).doc

    - 辅助技术:包括自我学习、在线培训、积分激励等,促进知识管理在业务中的应用。 - 技术先进:基于JAVA开发,适应多种操作系统和数据库,提供全面的功能模块。 4. 国外知识管理软件: 国外的知识管理软件如...

    2016大学生寒假扶贫助教实习报告.docx

    - 实习过程中,志愿者可以通过拍照、录音等方式记录下实地考察的信息,并借助智能手机或平板电脑上的应用程序(如Evernote或OneNote)进行整理。 - 数据分析软件(如SPSS或Excel的数据分析工具)可以帮助团队更...

    chrome插件

    Chrome插件,全称为Google Chrome浏览器扩展,是Google Chrome浏览器的一种功能增强机制,允许用户自定义和拓展浏览器的功能。Chrome插件是由JavaScript、HTML和CSS等Web技术编写,通过Chrome Web Store进行安装,为...

    信息素养-学术研究的必修课期末考试

    9. **数据获取**:如查找1980年我国的水果产量,涉及对历史统计数据的检索和分析。 10. **法律法规理解**:比如《中华人民共和国宪法》第五条的内容,体现了法律条文的查阅和理解能力。 11. **学术不端行为**:...

    办公室人员工作计划范文.docx

    - **实现方法**:使用会议记录软件(如Microsoft OneNote、Evernote)或云服务(如Google Drive、Dropbox)来存储会议纪要。 **2. 文件归档** - **重要性**:合理的文件归档机制对于长期保存重要文件至关重要,便于...

    Vue技术栈实现的云笔记项目,印象笔记的功能基本都实现.zip

    该项目基于Vue技术栈实现了一个云笔记应用,名为“vue-evernote-master”,其设计灵感和功能特点借鉴了知名的云笔记服务——印象笔记。Vue.js作为前端框架,提供了强大的组件化开发能力,使得项目的结构清晰,代码...

    FinancialfreeAcadmic-Zapier-app

    首先,我们要理解Zapier的基本运作机制。Zapier由“触发器”和“动作”组成。触发器是事件的起点,比如当一个新的电子邮件到达Gmail账户时,或者在Google表格中添加新行。一旦触发器被激活,Zapier会执行一系列预设...

Global site tag (gtag.js) - Google Analytics