uniapp 闹钟提醒
uniapp 实现闹钟提醒的方法
在uniapp中实现闹钟提醒功能,可以通过结合本地通知和后台任务完成。由于uniapp本身不直接提供闹钟API,需要借助HTML5+规范或原生插件实现。
使用HTML5+的本地通知
HTML5+规范提供了本地通知功能,可以在指定时间触发提醒。需要在manifest.json中配置权限:

"plus": {
"distribute": {
"plugins": {
"notification": {}
}
}
}
代码示例:
// 创建提醒
function setAlarm(hour, minute, title, content) {
const now = new Date();
const alarmTime = new Date();
alarmTime.setHours(hour);
alarmTime.setMinutes(minute);
alarmTime.setSeconds(0);
if (alarmTime <= now) {
alarmTime.setDate(alarmTime.getDate() + 1);
}
plus.notification.create(title, {
title: title,
content: content,
sound: 'system',
delay: alarmTime - now
});
}
// 调用示例
setAlarm(8, 30, '起床提醒', '该起床了!');
使用原生插件实现精确提醒
对于需要精确唤醒的闹钟功能,建议开发原生插件或使用现成插件:

- 安卓平台需要实现AlarmManager
- iOS平台需要实现LocalNotification
- 推荐使用uni-app插件市场的现成插件如
AlarmClock
注意事项
- 安卓平台需注意后台限制,可能需要引导用户设置白名单
- iOS平台需要用户授权通知权限
- 真机调试时才能测试通知功能
- 应用被杀死后可能无法触发,需考虑使用系统闹钟或推送替代
完整示例流程
// 检查通知权限
function checkPermission() {
plus.notification.checkPermission(
function(e) {
if (!e.granted) {
plus.notification.requestPermission();
}
}
);
}
// 设置每日重复闹钟
function setDailyAlarm(hour, minute) {
const now = new Date();
let alarmTime = new Date();
alarmTime.setHours(hour);
alarmTime.setMinutes(minute);
alarmTime.setSeconds(0);
if (alarmTime <= now) {
alarmTime.setDate(alarmTime.getDate() + 1);
}
const delay = alarmTime - now;
plus.notification.create('daily_alarm', {
title: '每日提醒',
content: '您设置的提醒时间到了',
sound: 'system',
delay: delay,
repeat: 'day'
});
}
其他实现方案
使用后台定时任务
通过plus.timer创建定时器,但需要注意应用在后台时的限制:
// 每分钟检查一次时间
const timer = plus.timer.setInterval(() => {
const now = new Date();
if (now.getHours() === 8 && now.getMinutes() === 30) {
plus.notification.alert('闹钟提醒');
}
}, 60000);
使用推送服务
对于需要云端同步的闹钟,可以结合uniPush实现:
- 用户设置闹钟时间后上传到服务器
- 服务器在指定时间发送推送
- 客户端接收推送后显示通知
这种方法不受应用状态限制,但需要网络连接。






