Python移动端应用消息提醒开发实践
Hello大家好我是唐叔今天想总结下在实现「TodoList」应用移动端应用消息提醒的相关实践欢迎查阅哦整个开发过程我尝试过三种方案下面是细致的方案内容第三方消息推送方案第三方消息推送方案简单说就是不依赖移动端应用本身实现消息提醒而是依赖第三方服务端将消息推送到手机厂商的服务器再由手机厂商推送消息给移动端应用。集成思路在第三方消息平台进行应用注册然后移动端应用集成该平台封装好的 SDK然后在第三方平台人工发消息移动端即可接收消息。(当然也可以使用自己的服务器集成平台发消息的 API 来实现自动化消息)。方案思考使用第三方消息推送的优势是基本不会出现消息无法接收即使本地应用关闭了也照样可以接收消息。不过劣势也很明显如果要实现自动化发送那么需要自行搭建服务端。最开始「TodoList」应用是计划桌面端应用作为服务端来自动化推送消息给移动端。为啥最终没这样干呢主要是存在维护成本因为使用第三方服务要注册应用生成应用唯一标识 AppKey。而像「TodoList」是完全开源的项目等于 AppKey 也是暴露给使用者的存在被滥用的风险当然也可以采用实现相关代码然后让用户自行配置 AppKey不过感觉这样会复杂化用户操作所以也最终没考虑了。本地通知AlarmManager本地通知指的是不依赖第三方消息平台直接由移动端应用本身的程序来触发消息提醒。这里python可以直接使用跨平台第三方依赖库plyerfromplyerimportnotification title,message,priorityself._build_notification(notification_msg)notification.notify(titletitle,messagemessage,app_nameTodoList,# app_iconutils.get_app_icon(),timeout10,)不过只使用本地通知一旦应用关闭了也就是程序关闭了那么就无法触发了。这里有几种方式解决该问题前台服务既然应用关闭就无法触发消息那就让应用一直保活不关闭AlarmManager这种不需要 Python 进程一直运行而是让安卓系统在指定时间唤醒你的 Python 脚本。前台服务等于应用关不了一直驻留感觉很影响用户体验也会很耗电我估计没几个用户会希望一个待办应用app一直在手机上运行吧所以选择的是本地通知 AlarmManager。不过这种方案最终也终止了究其原因实现起来太难辽。如果是纯Java程序还好实现毕竟安卓系统是支持直接运行Java的问题是「TodoList」是基于python……补充个人理解其实再继续倒腾可能最终能成。毕竟Buildozer本身是支持打包Java程序以及自定义配置文件的只是个人能力有限吧没搞成而已……系统日历提醒方式系统日历提醒方式也是最终方式了。这种的话貌似某些应用的打卡提醒就是用这种方式的。实现起来相对也比较简单。使用python编写程序Pyjnius调用安卓日历接口把待办事项存入系统日历并设置系统提醒同时完善相关权限申请提醒就可以了。具体的实现代码稍微有点长可以直接去看「TodoList」源码具体MR吧feat(mobile): add calendar reminder for tasks.好啦以上就是今天的分享内容啦感谢阅读。如果对「TodoList」应用感兴趣也欢迎下载程序体验哦Tags · TangIsLearning/TodoList近期还有一个桌面小控件完成开发后想着就推出v1.0版本如果有其他你觉得实用的功能期望出现在「TodoList」应用上欢迎留言提出哦。