更新记录

1.0.0(2026-03-09) 下载此版本

  • 初始版本发布
  • 支持 Android 端:通过系统 AlarmClock Intent 创建闹钟,SharedPreferences 本地记录
  • 支持 iOS 端:基于 UNUserNotificationCenter 本地通知,支持完整 CRUD 及重复闹钟
  • API:addAlarm / removeAlarm / removeAllAlarms / getAlarms

平台兼容性

uni-app(5.02)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android Android插件版本 iOS iOS插件版本 鸿蒙
- - × × - - 5.0 1.0.0 12 1.0.0 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × - × ×

uni-app x(5.02)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
× × 5.0 1.0.0 12 1.0.0 × ×

jun-alarm 闹钟提醒

跨端闹钟提醒 UTS API 插件,支持 Android 和 iOS 双端。

平台差异说明

功能 Android iOS
添加闹钟 ✅ 创建至系统时钟 App ✅ 本地通知
删除闹钟 ⚠️ 仅删除本地记录 ✅ 完全删除
删除全部 ⚠️ 仅删除本地记录 ✅ 完全删除
查询闹钟 ✅ 返回本地记录 ✅ 返回本地记录
重复闹钟 ✅ 指定星期 ✅ 指定星期
权限 自动授予(普通权限) 弹窗请求通知权限

Android 说明:闹钟通过系统 Intent(ACTION_SET_ALARM)创建于系统时钟 App,可在手机状态栏看到闹钟图标。由于系统限制,代码无法精确删除系统闹钟,removeAlarm / removeAllAlarms 仅清除插件本地记录,对应系统闹钟需用户在时钟 App 中手动关闭。

iOS 说明:使用 UNUserNotificationCenter 本地通知实现,通知在 App 后台或被杀死时均能触发,支持完整 CRUD。


引入方式

import { addAlarm, removeAlarm, removeAllAlarms, getAlarms } from '@/uni_modules/jun-alarm'
import type { AddAlarmOptions, RemoveAlarmOptions, RemoveAllAlarmsOptions, GetAlarmsOptions, AlarmInfo } from '@/uni_modules/jun-alarm'

API

addAlarm(opts: AddAlarmOptions): void

添加一个闹钟。

参数说明

字段 类型 必填 说明
id string 闹钟 ID,传空字符串自动生成
title string 闹钟标题
body string 闹钟通知内容/备注
triggerTime string 触发时间,格式 yyyy-MM-dd HH:mm:ss。Android 仅使用 HH:mm,iOS 一次性闹钟使用完整时间
repeatDays number[] 重复星期:0=周日 1=周一 … 6=周六,空数组表示仅触发一次
vibrate boolean 是否振动
success Function 成功回调,返回 { id: string, message: string }
fail Function 失败回调

示例

// 每周一、三、五 早上 7:30 响铃
addAlarm({
  id: 'my_alarm_001',
  title: '起床啦',
  body: '是时候起床了!',
  triggerTime: '2026-03-10 07:30:00',
  repeatDays: [1, 3, 5],
  vibrate: true,
  success: (res) => {
    console.log('闹钟已添加,ID:', res.id)
  },
  fail: (err) => {
    console.error('添加失败:', err.message)
  }
})

// 2026-03-10 08:00 一次性闹钟(不重复)
addAlarm({
  id: '',
  title: '开会提醒',
  body: '10分钟后有个重要会议',
  triggerTime: '2026-03-10 08:00:00',
  repeatDays: [],
  vibrate: false,
  success: (res) => {
    console.log('ID:', res.id)
  }
})

removeAlarm(opts: RemoveAlarmOptions): void

删除指定 ID 的闹钟。

参数说明

字段 类型 必填 说明
id string 要删除的闹钟 ID
success Function 成功回调
fail Function 失败回调(ID 不存在时触发)

示例

removeAlarm({
  id: 'my_alarm_001',
  success: (res) => {
    console.log(res.message)
  },
  fail: (err) => {
    console.error(err.message)
  }
})

removeAllAlarms(opts: RemoveAllAlarmsOptions): void

删除全部闹钟。

示例

removeAllAlarms({
  success: (res) => {
    console.log(res.message)
  }
})

getAlarms(opts: GetAlarmsOptions): void

查询所有已添加的闹钟,结果为本地记录的 JSON 字符串。

示例

getAlarms({
  success: (json) => {
    const list: AlarmInfo[] = JSON.parse(json) as AlarmInfo[]
    console.log('共', list.length, '条闹钟')
    list.forEach((alarm) => {
      console.log(alarm.id, alarm.title, alarm.triggerTime)
    })
  }
})

AlarmInfo 类型

字段 类型 说明
id string 闹钟 ID
title string 标题
body string 通知内容
triggerTime string 触发时间(格式 yyyy-MM-dd HH:mm:ss)
repeatDays number[] 重复星期(0=周日…6=周六)
vibrate boolean 是否振动

权限处理

  • iOS: 首次使用会弹出系统权限请求对话框
  • Android: 自动请求日历读写权限

将额外权限加入到 manifest.json > app-plus > distribute > android > permissions

<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 需要 SET_ALARM 普通权限;iOS 需要用户授权通知权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件不收集任何用户数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。