鸿蒙提醒管理:让通知「聪明又贴心」的3个技巧📢

嗨~我是小L!在鸿蒙开发中,提醒功能就像「贴心小秘书」------既能在后台精准触发通知,又能避免耗电。今天带你解锁代理提醒的核心玩法,让你的应用通知更智能!

一、代理提醒:后台通知的「守护者」🔒

核心优势

  • 进程无关:即使应用被杀,系统也会按时触发提醒
  • 低耗高效:由系统统一调度,避免应用常驻后台
  • 场景丰富:支持倒计时、日历、闹钟三种类型

典型应用场景

类型 场景举例 核心参数
倒计时提醒 会议开始前10分钟提醒 triggerTimeInSeconds: 600
日历提醒 每月1号提醒信用卡还款 dateTime: {month: 1, day: 1}
闹钟提醒 工作日早上7点闹钟 hour: 7, daysOfWeek: [1,2,3,4,5]

二、开发三步骤:从权限到发布🚀

1. 申请权限(关键第一步)

json 复制代码
// config.json  
{  
  "reqPermissions": [  
    { "name": "ohos.permission.PUBLISH_AGENT_REMINDER" }  
  ]  
}  

注意:需邮件向华为申请正式权限(测试阶段可用临时权限)

2. 定义提醒内容(以日历提醒为例)

typescript 复制代码
import { ReminderType, ReminderRequestCalendar } from '@ohos.reminderAgentManager';  

const birthdayReminder: ReminderRequestCalendar = {  
  reminderType: ReminderType.REMINDER_TYPE_CALENDAR,  
  dateTime: {  
    year: 2024,  
    month: 5,  
    day: 20,  
    hour: 9,  
    minute: 0  
  },  
  repeatMonths: [5], // 每年5月重复  
  actionButtons: [  
    { title: '查看礼物', type: 'BUTTON_TYPE_ACTION' },  
    { title: '延后提醒', type: 'BUTTON_TYPE_SNOOZE' }  
  ],  
  title: '好友生日提醒',  
  content: '今天是小明的生日,记得送祝福~',  
  notificationId: 1001, // 唯一通知ID  
  slotType: 'SOCIAL_COMMUNICATION' // 通知渠道类型  
};  

3. 发布与管理提醒

typescript 复制代码
// 发布提醒  
function scheduleReminder(reminder: ReminderRequestBase) {  
  reminderAgentManager.publishReminder(reminder).then(reminderId => {  
    console.log(`提醒已发布,ID:${reminderId}`);  
    saveReminderId(reminderId); // 本地存储ID以便后续管理  
  });  
}  

// 取消提醒  
function cancelReminder(reminderId: number) {  
  reminderAgentManager.cancelReminder(reminderId).then(() => {  
    console.log('提醒已取消');  
  });  
}  

三、三种提醒类型对比表📊

维度 倒计时提醒 日历提醒 闹钟提醒
触发方式 相对时间(秒) 绝对日期时间 每日固定时间
重复支持 不支持 按日/月重复 按周重复
典型场景 考试倒计时、烹饪计时 会议预约、节日提醒 起床闹钟、吃药提醒
核心参数 triggerTimeInSeconds dateTime/repeatMonths hour/daysOfWeek

四、通知优化:让提醒更「顺眼」👀

1. 自定义通知渠道(NotificationSlot)

typescript 复制代码
import { NotificationSlot, SlotType, Importance } from '@ohos.notificationManager';  

const reminderSlot: NotificationSlot = {  
  slotId: 'reminder_channel',  
  slotType: SlotType.SYSTEM_PROMPT,  
  name: '重要提醒',  
  importance: Importance.HIGH, // 高优先级(弹窗提醒)  
  description: '用于显示关键业务提醒',  
  enableVibration: true,  
  ledColor: '#FF0000' // 呼吸灯红色  
};  

// 创建渠道  
notificationManager.addNotificationSlot(reminderSlot).then(() => {  
  console.log('通知渠道创建成功');  
});  

2. 智能交互按钮

typescript 复制代码
// 添加「立即处理」和「稍后提醒」按钮  
const actionButtons = [  
  {  
    title: '立即处理',  
    type: 'BUTTON_TYPE_ACTION',  
    want: { // 点击按钮跳转的目标  
      bundleName: 'com.example.app',  
      abilityName: 'TaskDetailAbility',  
      parameters: { taskId: '123' }  
    }  
  },  
  {  
    title: '1小时后提醒',  
    type: 'BUTTON_TYPE_SNOOZE',  
    snoozeTime: 3600 // 延时1小时  
  }  
];  

3. 过期提醒处理

typescript 复制代码
// 设置过期内容(未触发的提醒显示)  
const reminder = {  
  ...baseReminder,  
  expiredContent: '您的会议提醒已过期,可查看历史记录',  
  // 过期后自动跳转至历史记录页面  
  expiredWant: {  
    bundleName: 'com.example.app',  
    abilityName: 'ReminderHistoryAbility'  
  }  
};  

五、权限申请与合规要点⚠️

1. 官方申请流程

  1. 邮件至 hwpush@huawei.com,主题:【代理提醒权限申请】应用名称-包名
  2. 正文需包含:
    • 应用场景(如「医疗类App用药提醒」)
    • 通知频率(如「每日最多3次」)
    • 通知内容示例(如「您的体检报告已生成」)

2. 用户隐私保护

  • 禁止推送与应用功能无关的通知(如广告)
  • 提供一键关闭提醒的入口
  • 敏感信息加密传输(如医疗提醒中的病历号)

六、实战场景:健身App的智能提醒方案🏋️

场景描述

  • 用户设定每周一、三、五19:00健身提醒
  • 倒计时30分钟时提示准备运动装备
  • 提醒未响应时,1小时后自动延后

实现逻辑

  1. 闹钟提醒

    typescript 复制代码
    const workoutAlarm: ReminderRequestAlarm = {  
      reminderType: 'ALARM',  
      hour: 19,  
      minute: 0,  
      daysOfWeek: [1,3,5], // 周一、三、五(1代表周一)  
      snoozeTimes: 2, // 最多延后2次  
      timeInterval: 3600, // 每次延后1小时  
      ...commonReminderConfig  
    };  
  2. 倒计时提醒

    typescript 复制代码
    // 在闹钟触发前30分钟自动生成倒计时  
    function addPreReminder(alarmId: number) {  
      const preReminder: ReminderRequestTimer = {  
        reminderType: 'TIMER',  
        triggerTimeInSeconds: 1800, // 30分钟  
        linkedReminderId: alarmId, // 关联闹钟提醒ID  
        ...commonReminderConfig  
      };  
      scheduleReminder(preReminder);  
    }  

总结:提醒设计「四要素」

  1. 时机精准:用倒计时/日历/闹钟匹配场景时间特性
  2. 交互友好:提供明确操作按钮,减少用户决策成本
  3. 视觉分层:通过通知渠道设置区分重要程度
  4. 合规安全:申请权限+保护隐私,避免用户反感
相关推荐
花生侠15 分钟前
记录:前端项目使用pnpm+husky(v9)+commitlint,提交代码格式化校验
前端
一涯22 分钟前
Cursor操作面板改为垂直
前端
我要让全世界知道我很低调29 分钟前
记一次 Vite 下的白屏优化
前端·css
1undefined231 分钟前
element中的Table改造成虚拟列表,并封装成hooks
前端·javascript·vue.js
蓝倾1 小时前
淘宝批量获取商品SKU实战案例
前端·后端·api
comelong1 小时前
Docker容器启动postgres端口映射失败问题
前端
花海如潮淹1 小时前
硬件产品研发管理工具实战指南
前端·python
用户3802258598241 小时前
vue3源码解析:依赖收集
前端·vue.js
WaiterL1 小时前
一文读懂 MCP 与 Agent
前端·人工智能·cursor