鸿蒙提醒管理:让通知「聪明又贴心」的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. 邮件至 [email protected],主题:【代理提醒权限申请】应用名称-包名
  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. 合规安全:申请权限+保护隐私,避免用户反感
相关推荐
又又呢31 分钟前
前端面试题总结——webpack篇
前端·webpack·node.js
dog shit1 小时前
web第十次课后作业--Mybatis的增删改查
android·前端·mybatis
我有一只臭臭1 小时前
el-tabs 切换时数据不更新的问题
前端·vue.js
七灵微1 小时前
【前端】工具链一本通
前端
Nueuis2 小时前
微信小程序前端面经
前端·微信小程序·小程序
_r0bin_5 小时前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
IT瘾君5 小时前
JavaWeb:前端工程化-Vue
前端·javascript·vue.js
potender5 小时前
前端框架Vue
前端·vue.js·前端框架
站在风口的猪11086 小时前
《前端面试题:CSS预处理器(Sass、Less等)》
前端·css·html·less·css3·sass·html5
程序员的世界你不懂6 小时前
(9)-Fiddler抓包-Fiddler如何设置捕获Https会话
前端·https·fiddler