人升更新介绍#1.68.0 | 11/24 全新的成就、日历系统
欢迎更新到v1.68.0~
这个版本可能是比肩商店系统的一次重要更新。
首先是实现了远比之前版本完善的成就系统,其次也更新了日历视图,各个页面也有大大小小的优化。
开始正题之前,先发下这篇文章的总览:
总览
- 全新的成就系统,56种成就。
- 日历视图
- 金币详情
- 历史页面
- 其他改进
- To Do
欢迎更新到v1.68.0~
这个版本可能是比肩商店系统的一次重要更新。
首先是实现了远比之前版本完善的成就系统,其次也更新了日历视图,各个页面也有大大小小的优化。
开始正题之前,先发下这篇文章的总览:
找到实习后,挺长一段时间没更新了。
《人升》的话,最近接入了Crashlytics,更新了金币系统等等。
回忆一下Crashlytics的接入过程~
不需要额外权限
而国内很多崩溃统计向的都有不少权限要求,比如友盟统计必须依赖READ_PHONE_STATE等权限。
国内也能访问
是的,虽然Crashlytics属于Firebase,但是并没有用到Google的服务器。
配置简单,不需要额外代码
这一点我也很惊喜,只需要在Gradle文件里进行一些配置。项目代码甚至不需要任何变动。
能直接在Crashlytics后台看到混淆前的堆栈信息
另外除了崩溃分析/管理功能外,其实还能在控制台看到活跃用户统计、用户行为分析、次日留存率、版本情况等等。
查看这些信息感觉很有助于维持更新兴趣~
总体来讲,感觉Crashlytics很适合独立开发者使用。
Crashlytics已经被并入了Firebase体系,所以要先接入Firebase。
Fabric虽然还能直接加入Crashlytics,但是仅提供支持到2020年3月31号,官网也在建议用户迁移至Firebase。
接入Firebase可以参考官方教程。
流程可以概述为:
创建Firebase项目
注册应用,上传签名的SHA码
这两步在官网跟着流程走就可以,就不详细说明了。
下载 google-services.json放到项目的模块目录(一般是app文件夹里)中。
项目级gradle文件里加入Firebase和Crashlytics配置:
1 | buildscript { |
模块级gradle文件里加入:
1 | apply plugin: 'com.google.gms.google-services' |
到这一步为止,其实已经集成完毕了。
(可选)如果你的应用开启了代码混淆的话,建议在proguard-rules.pro文件里加入以下规则,以便拿到混淆前的堆栈信息:
1 | # Crashlytics |
测试一下崩溃吧
在相应的地方可以用以下语句制造一个崩溃,然后过几分钟后,前往Firebase的后台查看崩溃信息吧~
1 | Crashlytics.getInstance().crash() // 制造一个崩溃 |
更多Crashlytics的用法可以参考官方的页面,比如可以记录try-catch住的异常,自定义一些key-value信息方便分析崩溃等等。
收到多次需要夜间模式的反馈,就研究了一下要怎么实现~
本以为需要手动替换Theme,实际上Android已经提供了相应的功能。
实际使用之后才发现,Fragment能实现到和Activity在使用上分辨不出的效果。
首先是依赖,需要使用appcompat:(我这里用的androidx库,support库同理)
1 | implementation 'androidx.appcompat:appcompat:1.1.0-beta01' |
之前使用Fragment都是配合ViewPager或者配合TabLayout+ViewPager,基本没用过FragmentManager。
实际使用之后才发现,Fragment能实现到和Activity在使用上分辨不出的效果。
其实我们要实现的效果很简单,一个主Fragment显示各个设置的大类(比如显示设置、小部件设置等),点击之后切换到不同的Fragment显示,然后那些Fragment只能回退到主Fragment,主Fragment再回退就是结束Activity。
大概这样:
Fragment的布局文件正常就好。
Activity要怎么样呢?我们的Activity本身是不需要任何内容的,只需要充当一个容器的作用就行:
activity_setting.xml
1 |
|
在Fragment中获取Toolbar这个View,然后调用Activity的setSupportActionBar(toolbar)
方法。
然后实现Option菜单的方法:在Fragment中设置setHasOptionsMenu(true)
,然后重写fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater)
方法。
出现的问题:似乎是因为ViewPager的缓存机制,导致切换Fragments切换的时候可能出现菜单错乱的情况。
MainActivity.kt
1 | fun initToolBar(toolbar: Toolbar) { |
Fragment.kt
1 | private fun initToolbar(view: View) { |
AndroidX是 Google 发布的对原来的支持库整理后的新一代支持库。并且原来的支持库的最后版本将停留在“28.0.0”,迁移是迟早的事情。
主要动机还是想要用一个框架,结果它只支持AndroidX,就这样决定开始迁移了。
需求:Android Studio版本3.2以上
操作:Refactor -> Migrate to Androidx
IDE会询问是否要备份一份当前的项目,并且会告知可能需要你手动解决一些项目Error。
继续操作,IDE会搜索所有的要改变的依赖路径,然后点击DO REFACTOR
按钮吧。
本文讲讲怎么用 MPAndroidChart 框架实现折线图、柱形图、饼图,并且进行样式设置,达到和宣传图差不多的效果。
一开始看到 MPAndroidChart 的各种图表介绍图感觉很好看,但是直接New一个相应图表,仅仅填充数据的话,样式稍微有些丑。经过一番阅览文档才把样式调整得好看些。所以就写了这篇文章记录下。
APP 里实现的最终效果:
首先是引入框架:
https://github.com/PhilJay/MPAndroidChart
Gradle设置一下:
1 | repositories { |
领取成就奖励时,显示的时间不正确。
重新进入页面可以查看正确的时间。下个版本会修复。
因为近期我们两位开发者都需要赶毕业设计/论文进度😅
所以这段时间的更新速度会稍微减缓。
后续的一些更新目前计划是关注于增强“游戏化”方面,还有实现之前采纳的用户建议。
也欢迎大家继续提出各种建议~
应用图标感觉需要一波更新,但我们这边暂时没什么想法(:з」∠)
如果你有意贡献图标/想法的话,欢迎邮件联系~
新建事项的各个选项介绍、新建各种类型的事项、清单管理与排序、稍后阅读功能
简洁模式、图片附件、WebDAV配置方法、撤销优化、动态显示优化
子任务、逾期处理、自定义排序、冻结、编辑团队事项
新成就系统
升级你的人生
简单一句话介绍这个应用的特色,就是“游戏化的待办事项应用”。
用一个情景详细地介绍游戏化:
完成了一篇文章,打开应用,在“写一篇文章”的事项前打上勾,标记完成。
此时你获得了一些「学识」和「创造」200经验值,并且「学识」升了一级。
应用还弹出了“成就解锁!法师”的成就解锁提示框。
此外,还获得了10个金币。
点击商店,查看为自己设置的奖励商品列表。
斟酌半刻,你购买了耗费8金币的奶茶。然后前往仓库,使用了刚刚购买的奶茶。
于是现实中,可以心满意足地点开外卖应用下单奶茶奖励自己。
该情景主要只涵盖了应用的游戏化部分,除此之外还有社区、统计、日历、桌面小部件等功能,会在后面部分介绍。
2019/10/31:因为目前在实习+准备毕设,稍微将原本大概7-14天一更的频次调整到14-21天一更。
并且,《人升》无开屏、无内置广告、暂无内购。体积也一直尽量保持在6mb左右。
并且通过了Android 绿色应用公约 3.0验证,无需读取手机状态、甚至无需外部存储空间权限。
理论上运行无需任何权限,只为了一些可选功能申请了一些权限:
查看网络连接、查看WLAN连接、拥有完全的网络访问权限
为了实现登录、社区等功能。
如果完全把《人升》当作一个离线工具使用,甚至可以关闭这些权限。
运行前台服务
为了实现桌面小部件完成事项的功能。
同理,如果不需要用到桌面小部件,该权限也可以关闭。
日历读写权限
只有将提醒方式改为“系统日历提醒”的时候才会动态申请该权限。
如果不需要“系统日历提醒”功能,该权限也可以关闭。
其他权限
一些其他权限诸如Play Store相关的,其实是第三方SDK申请的。
比如Google授权登录、QQ授权登录。
暂时,《人升》在国内是用爱发电,感谢诸位的捐赠让我们走下来。
在Google Play市场,我们面向海外发布了价格为$0.99的买断版本。
捐赠过的用户可以向我们发送邮件获取Google Play的兑换码。
并且有意把这个版本当作以后《人升》实现“终身会员”的雏形,
目前的所有基础功能都不会需要会员,
部分比较偏的需求,或者是需要消耗服务器资源的需求,可能会选作是”终身会员“的福利。
有意把”会员“的购买界面做得像购买游戏DLC一样😂
并且计划实现会员前捐赠的所有用户都能获得相应的会员兑换码。
🧐小谈一下押金制,目前也有一部分用户出于好意提议我们未来采用押金制。
但就我个人而言,觉得押金制有些功利(无论是对于开发者还是使用者)。
对于使用者来说,使用实际的金钱惩罚,来逼迫自己冲动地完成或者是坚持某个目标。
有种自我绑架的意味?(胡言乱语)对于自己的提升,是肯定不及兴趣和单纯的自制来得多的。
甚至也有可能起反作用,对自己本来想要做的事情起了厌恶之情。
又或者是,为了避开惩罚,就算没完成也硬是点下完成
按钮。
逐渐偏离最初的目标,从坚持完成某个事,到为了不受惩罚而完成某件事。
当然,这一些都因人而异,选择自己合适的方式即可😜。
只是《人升》基于以上原因不可能会采用押金制。
目前,我们官方上架并且维护更新的应用市场有:酷安、魅族、小米、华为、Google Play、应用宝、阿里应用分发(含:豌豆荚、PP 助手、YunOS 应用商店、UC应用商店等)。
华为应用市场也拿回了应用管理权,也可以在华为应用市场上更新人升了。
并且在这些应用市场上架的都是相同的包名,完全可以跨市场升级~
之前客户端的代码是在Github上完全开源的,
但是经历了被人恶意篡改、插入广告,上架到一些市场抢占包名的事情之后,
我们已经把客户端的代码闭源了。
以后,可能会开源部分代码或者应用架构等。
在完成时,点击底部提示框的“撤销”按钮。
于侧边栏
的历史
页面,点击撤销按钮。
于日历
页面的已结束
模块,点击撤销按钮。
可以撤销任意时刻的无重复待办事项,以及今天完成的重复事项。
可以设置经验值或者金币惩罚吗?
可以的,默认也启用了经验值惩罚。金币惩罚默认没启用。
可以在侧边栏
-设置
-自定义设置
里自由设定。
😅 不知道为什么这点一直有人反馈建议(还没留联系方式,没法回复),后续会加强对“惩罚”的展示效果。
如何隐藏掉已经完成的事项(其实是未开始的事项)?
在主页(即告示
页面),点击右上角的菜单栏(三个点),再点击筛选
,选中只显示今天事项
即可。
如何建立指定周几的待办事项?如每周一、二、三。
如何下架商品?
在商店
页面,长按商品,然后选择顶部的垃圾桶按钮。
指定时间没收到提醒?
应用内其实也有说明,由于独立应用权限有限,默认的提醒方式会受系统限制,可能关了后台就失效了。
可以尝试更换为系统日历提醒方式(设置
-事项设置
),更换后,可以查看系统日历app有没有成功插入提醒时间。
想初始化“我的”页面中的逾期、放弃数
这里的数字统计是基于历史记录的,可以前往侧边栏
-历史
页面,删除相应的错误记录。
什么是目标重复次数和计数事项次数?
我不想用社区,可以隐藏吗?
可以前往侧边栏
-设置
-显示设置
内隐藏社区,需要重启应用生效~
制作小部件的途中也遇到了各种坑orz,而且网络上的各种文章都不详细,摸索了一两天才写完。
首先,直接使用AS新建一个APP WIDGET,进行各种配置。
之后如果想修改小部件的最低宽高可以参考这个表: