news 2026/6/14 17:39:26

创建提醒模块 Cordova 与 OpenHarmony 混合开发实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
创建提醒模块 Cordova 与 OpenHarmony 混合开发实战

📌 概述

创建提醒模块允许用户创建定时提醒。该模块集成了 Cordova 框架与 OpenHarmony 原生能力,提供了完整的提醒创建功能。用户可以设置提醒名称、提醒时间、重复周期等信息。模块支持多种提醒类型,帮助用户创建各种提醒。

🔗 完整流程

第一步:提醒表单初始化

当用户进入创建提醒页面时,应用会加载提醒类型列表。用户可以选择提醒类型或从空白表单开始。应用会显示当前时间作为默认值。

第二步:提醒信息输入与验证

用户在表单中输入提醒信息。应用会实时验证用户输入的数据,确保提醒时间等信息有效。当用户输入不合法的数据时,应用会显示错误提示。

第三步:提醒保存与同步

当用户点击保存按钮时,应用会进行最终的数据验证。如果所有字段都通过验证,应用会将提醒保存到 IndexedDB 数据库中。同时,应用会通过 Cordova 调用原生插件,注册系统提醒。

🔧 Web 代码实现

HTML 创建提醒表单

<divid="create-reminder-page"class="page"><divclass="page-header"><h1>创建提醒</h1></div><formid="reminder-form"class="form"><divclass="form-group"><labelfor="reminder-name">提醒名称 *</label><inputtype="text"id="reminder-name"name="name"required></div><divclass="form-group"><labelfor="reminder-time">提醒时间 *</label><inputtype="time"id="reminder-time"name="time"required></div><divclass="form-group"><labelfor="reminder-repeat">重复周期</label><selectid="reminder-repeat"name="repeat"><optionvalue="none">不重复</option><optionvalue="daily">每天</option><optionvalue="weekly">每周</option><optionvalue="monthly">每月</option></select></div><divclass="form-group"><labelfor="reminder-description">描述</label><textareaid="reminder-description"name="description"rows="3"></textarea></div><divclass="form-actions"><buttontype="submit"class="btn btn-primary">保存提醒</button><buttontype="button"class="btn btn-secondary"onclick="navigateTo('reminder-list')">取消</button></div></form></div>

创建提醒页面包含提醒表单。用户可以设置提醒的各项信息。

创建提醒逻辑

asyncfunctionhandleCreateReminder(event){event.preventDefault();constformData=newFormData(document.getElementById('reminder-form'));constreminderData={name:formData.get('name'),time:formData.get('time'),repeat:formData.get('repeat'),description:formData.get('description'),enabled:true,createdAt:newDate().toISOString()};// 验证数据if(!reminderData.name||!reminderData.time){showToast('请填写所有必填字段','warning');return;}try{constreminderId=awaitdb.addReminder(reminderData);// 注册系统提醒if(window.cordova){cordova.exec(function(){console.log('Reminder registered');},function(err){console.error('Error:',err);},'ReminderManager','registerReminder',[{id:reminderId,name:reminderData.name,time:reminderData.time,repeat:reminderData.repeat}]);cordova.exec(null,null,'TeaLogger','logEvent',['reminder_created',{reminderId:reminderId,name:reminderData.name}]);}showToast('提醒已创建','success');setTimeout(()=>navigateTo('reminder-list'),1000);}catch(error){console.error('Failed to create reminder:',error);showToast('创建失败,请重试','error');}}// 初始化表单document.addEventListener('DOMContentLoaded',function(){constform=document.getElementById('reminder-form');if(form){form.addEventListener('submit',handleCreateReminder);// 设置默认时间为当前时间constnow=newDate();consthours=String(now.getHours()).padStart(2,'0');constminutes=String(now.getMinutes()).padStart(2,'0');document.getElementById('reminder-time').value=`${hours}:${minutes}`;}});

这段代码实现了创建提醒功能。handleCreateReminder()处理表单提交并保存提醒。

🔌 OpenHarmony 原生代码

系统提醒注册

// entry/src/main/ets/plugins/ReminderManager.etsimport{reminderAgentManager}from'@kit.BackgroundTasksKit';exportclassReminderManager{staticregisterReminder(reminder:ReminderInfo):void{const[hours,minutes]=reminder.time.split(':').map(Number);constreminderRequest:reminderAgentManager.ReminderRequest={reminderType:reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM,hour:hours,minute:minutes,title:reminder.name,content:`提醒:${reminder.name}`,expiredTime:0,notificationId:reminder.id,slotType:reminderAgentManager.SlotType.SLOT_TYPE_CUSTOM};reminderAgentManager.publishReminder(reminderRequest,(err,reminderId)=>{if(err){hilog.error(0xFF00,'ReminderManager',`Failed to register reminder:${err}`);}else{hilog.info(0xFF00,'ReminderManager',`Reminder registered with id:${reminderId}`);}});}staticcancelReminder(reminderId:number):void{reminderAgentManager.cancelReminder(reminderId,(err)=>{if(err){hilog.error(0xFF00,'ReminderManager',`Failed to cancel reminder:${err}`);}else{hilog.info(0xFF00,'ReminderManager',`Reminder cancelled:${reminderId}`);}});}}interfaceReminderInfo{id:number;name:string;time:string;repeat:string;}

这个类管理系统提醒。registerReminder()注册系统提醒。cancelReminder()取消系统提醒。

📝 总结

创建提醒模块展示了如何在 Cordova 框架中实现提醒创建功能。通过 Web 层的表单处理,结合原生层的系统提醒注册,为用户提供了完整的提醒创建体验。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 14:18:08

14、WINS服务器与GlobalNames区域部署全解析

WINS服务器与GlobalNames区域部署全解析 1. WINS服务器基础配置 1.1 自动配置复制伙伴 WINS服务器可以自动将其他WINS服务器配置为复制伙伴。它通过定期多播来宣告自己的存在,多播消息以IGMP消息的形式发送到组播地址224.0.1.24(这是为WINS服务器使用保留的知名多播IP地址…

作者头像 李华
网站建设 2026/6/11 3:02:11

SpringBoot+Vue 太原学院商铺管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着电子商务的快速发展&#xff0c;商铺管理系统在高校商业环境中扮演着越来越重要的角色。太原学院作为一所综合性院校&#xff0c;校内商铺数量较多&#xff0c;传统的手工管理方式效率低下&#xff0c;难以满足现代化管理的需求。商铺管理系统能够有效整合商铺信息、订…

作者头像 李华
网站建设 2026/6/14 17:59:21

29、分布式文件系统与共享文件夹影子副本全解析

分布式文件系统与共享文件夹影子副本全解析 1. 分布式文件系统概述 在分布式文件系统中,客户端并非每小时都检查命名空间更新,而是每小时轮询最近的域控制器来发现命名空间的更新。除了轮询,还可以配置引用。引用是客户端计算机在用户访问具有目标的命名空间根或文件夹时,…

作者头像 李华
网站建设 2026/6/15 6:33:20

LangFlow能否替代代码开发?专家深度点评其局限与优势

LangFlow能否替代代码开发&#xff1f;专家深度点评其局限与优势 在AI应用开发的浪潮中&#xff0c;一个看似简单的问题正引发越来越多讨论&#xff1a;我们是否还需要写代码来构建智能系统&#xff1f;随着LangChain等框架让大模型集成变得可行&#xff0c;另一类工具——如La…

作者头像 李华
网站建设 2026/6/14 23:54:00

LangFlow与Docker Compose整合:一键启动完整AI环境

LangFlow与Docker Compose整合&#xff1a;一键启动完整AI环境 在大模型浪潮席卷各行各业的今天&#xff0c;越来越多开发者希望快速构建基于大语言模型&#xff08;LLM&#xff09;的应用。然而现实往往令人却步&#xff1a;LangChain 的复杂 API、多服务依赖的配置难题、环境…

作者头像 李华
网站建设 2026/6/12 9:28:40

scanner在汽车焊装线的质量追溯应用:完整示例

扫码器如何成为焊装线的“质量侦探”&#xff1f;一个真实案例讲透工业追溯在汽车工厂里&#xff0c;每天有成百上千台车身骨架沿着焊装主线缓缓前行。机械臂挥舞间火花四溅&#xff0c;数百个焊点在一分钟内精准完成。但你有没有想过&#xff1a;如果半年后某辆车出现异响&…

作者头像 李华