优秀不是偶然的,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"中,可以找到关于如何集成用户认证机制的代码。 2. 数据存储和同步: Meteor 支持MongoDB数据库,因此开发者需要理解如何设计数据模型,以及如何实现数据的增删改查和实时同步。 3. UI/UX 设计...
Evernote则是一个强大的笔记应用,可以帮助整理和归档学习资料。这些工具让学习变得更加高效。 远程教育也得益于互联网平台的发展。Zoom、Microsoft Teams等在线会议软件使得教师可以进行实时授课,学生在家也能...
对于开发者而言,深入研究Evernix的源代码将有助于学习如何与Evernote API交互,以及如何利用Java进行桌面应用的开发。对于普通用户,了解和使用Evernix能提升他们在Evernote中的工作效率,更好地管理个人知识库。
通过以上分析,我们可以看到UmbrellaNote不仅是一个免费的Evernote替代品,更是一个集开源、个性化、安全和高效于一体的笔记工具。无论是个人学习、工作记录还是团队协作,UmbrellaNote都能提供强大的支持。对于那些...
对于源码分析,我们可以参考其他优秀的开源便签应用,比如Evernote或Google Keep,学习它们的实现方式,尤其是如何处理复杂的功能如标签系统、提醒设置等。理解这些功能背后的逻辑和代码结构,能帮助我们更好地改进...
在化学学习中,理解并掌握反应机制、物质性质和化学方程式是非常重要的,这些在选择题和非选择题中都有所体现。 在IT行业中,我们也可以借鉴这种学习策略。例如,通过在线编程挑战或技术问答来检验自己的技能水平,...
6. **权限与认证**:用户需要授权同步工具访问他们的Pinboard和Evernote账户,因此源码中会涉及到OAuth或其他身份验证机制,以确保数据的安全性。 7. **多线程与并发控制**:为了提高性能,源码可能采用多线程或者...
Laverna是一款基于JavaScript开发的开源笔记应用,它旨在为用户提供类似于Evernote的高效笔记管理体验,但同时强调了隐私和数据安全性。Laverna的一大特色是内置的Markdown编辑器,使得用户能够轻松地创建、格式化和...
3. 代码型笔记软件:如Jupyter Notebook、Typora,适合编程、数据分析、科学计算等场景,支持Markdown语言和实时预览。 4. 协作型笔记软件:如Google Keep、TiddlyWiki,允许多人共享和协作编辑笔记。 三、选择笔记...
- 辅助技术:包括自我学习、在线培训、积分激励等,促进知识管理在业务中的应用。 - 技术先进:基于JAVA开发,适应多种操作系统和数据库,提供全面的功能模块。 4. 国外知识管理软件: 国外的知识管理软件如...
- 实习过程中,志愿者可以通过拍照、录音等方式记录下实地考察的信息,并借助智能手机或平板电脑上的应用程序(如Evernote或OneNote)进行整理。 - 数据分析软件(如SPSS或Excel的数据分析工具)可以帮助团队更...
Chrome插件,全称为Google Chrome浏览器扩展,是Google Chrome浏览器的一种功能增强机制,允许用户自定义和拓展浏览器的功能。Chrome插件是由JavaScript、HTML和CSS等Web技术编写,通过Chrome Web Store进行安装,为...
9. **数据获取**:如查找1980年我国的水果产量,涉及对历史统计数据的检索和分析。 10. **法律法规理解**:比如《中华人民共和国宪法》第五条的内容,体现了法律条文的查阅和理解能力。 11. **学术不端行为**:...
通过对这些案例的学习与分析,设计师可以汲取灵感,将理论知识转化为实际应用,打造出既美观又实用的Android平板电脑应用程序。 总之,设计Android平板电脑应用程序时,深入理解并运用交互原则,结合屏幕尺寸与方向...
- **实现方法**:使用会议记录软件(如Microsoft OneNote、Evernote)或云服务(如Google Drive、Dropbox)来存储会议纪要。 **2. 文件归档** - **重要性**:合理的文件归档机制对于长期保存重要文件至关重要,便于...
该项目基于Vue技术栈实现了一个云笔记应用,名为“vue-evernote-master”,其设计灵感和功能特点借鉴了知名的云笔记服务——印象笔记。Vue.js作为前端框架,提供了强大的组件化开发能力,使得项目的结构清晰,代码...
首先,我们要理解Zapier的基本运作机制。Zapier由“触发器”和“动作”组成。触发器是事件的起点,比如当一个新的电子邮件到达Gmail账户时,或者在Google表格中添加新行。一旦触发器被激活,Zapier会执行一系列预设...