Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
2b086e3a
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2b086e3a
编写于
9月 01, 2022
作者:
廖
廖康康
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
提醒代理文档更新
Signed-off-by:
N
廖康康
<
liaokangkang@huawei.com
>
上级
e6a52bdb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
112 addition
and
217 deletion
+112
-217
zh-cn/application-dev/notification/background-agent-scheduled-reminder-guide.md
...notification/background-agent-scheduled-reminder-guide.md
+109
-214
zh-cn/application-dev/reference/apis/js-apis-reminderAgent.md
...n/application-dev/reference/apis/js-apis-reminderAgent.md
+3
-3
未找到文件。
zh-cn/application-dev/notification/background-agent-scheduled-reminder-guide.md
浏览文件 @
2b086e3a
# 开发指导
#
后台提醒
开发指导
## 场景介绍
...
...
@@ -7,137 +7,33 @@
## 接口说明
reminderAgent:封装了发布、取消提醒类通知的方法
reminderAgent:封装了发布、取消提醒类通知的方法。
具体后台提醒相关功能接口请见
[
后台代理提醒
](
../reference/apis/js-apis-reminderAgent.md
)
。
**表1**
reminderAgent主要接口
| 接口名 | 描述 |
| -------- | -------- |
| function
publishReminder(reminderReq:
ReminderRequest,
callback:
AsyncCallback
<
number
>
):
void;
<br/>
function
publishReminder(reminderReq:
ReminderRequest):
Promise
<
number
>
; | 发布一个定时提醒类通知。
<br/>
单个应用有效的提醒个数最多支持30个(不包括已经超时,即后续不会再提醒的提醒实例)
<br/>
整个系统有效的提醒个数最多支持2000个(不包括已经超时,即后续不会再提醒的提醒实例) |
| function
cancelReminder(reminderId:
number,
callback:
AsyncCallback
<
void
>
):
void;
<br/>
function
cancelReminder(reminderId:
number):
Promise
<
void
>
; | 取消一个指定的提醒类通知。(reminderId从publishReminder的返回值获取) |
| function
getValidReminders(callback:
AsyncCallback
<
Array
<
ReminderRequest
>>
):
void;
<br/>
function
getValidReminders():
Promise
<
Array
<
ReminderRequest
>>
; | 获取当前应用设置的所有有效的提醒。 |
| function
cancelAllReminders(callback:
AsyncCallback
<
void
>
):
void;
<br/>
function
cancelAllReminders():
Promise
<
void
>
; | 取消当前应用设置的所有提醒 |
| function
addNotificationSlot(slot:
NotificationSlot,
callback:
AsyncCallback
<
void
>
):
void;
<br/>
function
addNotificationSlot(slot:
NotificationSlot):
Promise
<
void
>
; | 注册一个提醒类需要使用的NotificationSlot |
| function
removeNotificationSlot(slotType:
notification.SlotType,
callback:
AsyncCallback
<
void
>
):
void;
<br/>
function
removeNotificationSlot(slotType:
notification.SlotType):
Promise
<
void
>
; | 删除指定类型的NotificationSlot |
enum ActionButtonType: 在提醒弹出的通知界面上的按钮的类型。
**表2**
ActionButtonType 枚举类型
| 枚举名 | 描述 |
| -------- | -------- |
| ACTION_BUTTON_TYPE_CLOSE | 指明是close按钮,点击后关闭当前提醒的铃声(如果正在响铃),关闭提醒的通知,取消延迟提醒。 |
enum ReminderType: 提醒类型
**表3**
ReminderType 提醒类型枚举
| 枚举名 | 描述 |
| -------- | -------- |
| REMINDER_TYPE_TIMER | 指明是倒计时类型 |
| REMINDER_TYPE_CALENDAR | 指明是日历类型 |
| REMINDER_TYPE_ALARM | 指明是闹钟类型 |
interface ActionButton:在提醒弹出的通知界面上的按钮实例
**表4**
ActionButton
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| title | string | 是 | 按钮上显示的名称 |
| type | ActionButtonType | 是 | 按钮的类型 |
interface WantAgent: 设置点击通知后需要跳转的目标ability信息
**表5**
WantAgent
| 参数名 | 类型 | 是否必选 | 描述 |
| -------- | -------- | -------- | -------- |
| pkgName | string | 是 | 目标包的名称 |
| abilityName | string | 是 | 目标ability的名称 |
interface MaxScreenWantAgent: 设置提醒到达时跳转的目标包。如果设备正在使用中,则弹出一个通知框
**表6**
MaxScreenWantAgent
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| pkgName | string | 是 | 目标包的名称 |
| abilityName | string | 是 | 目标ability的名称 |
interface ReminderRequest: 需要发布的提醒实例的信息
**表7**
ReminderRequest
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| reminderType | ReminderType | 是 | 提醒的类型 |
| actionButton | [ActionButton?,ActionButton?] | 否 | 弹出的提醒通知栏中显示的按钮 |
| wantAgent | WantAgent | 否 | 点击通知后需要跳转的目标ability信息 |
| maxScreenWantAgent | MaxScreenWantAgent | 否 | 提醒到达时跳转的目标包。如果设备正在使用中,则弹出一个通知框 |
| ringDuration | number | 否 | 响铃时长 |
| snoozeTimes | number | 否 | 延迟提醒次数 |
| timeInterval | number | 否 | 延迟提醒间隔 |
| title | string | 否 | 提醒的标题 |
| content | string | 否 | 提醒的内容 |
| expiredContent | string | 否 | 提醒“过期”时显示的扩展内容 |
| snoozeContent | string | 否 | 提醒“再响”时显示的扩展内容 |
| notificationId | number | 否 | 提醒使用的notificationRequest的id,参见NotificationRequest::SetNotificationId(int32_t
id) |
| slotType | SlotType | 否 | 提醒使用的slot类型 |
interface ReminderRequestCalendar extends ReminderRequest: 日历类提醒实例。
如果没有指定重复的月或天,那么第一次指定的目标时间必须大于当前时间,否则应用将异常退出。
**表8**
ReminderRequestCalendar
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| dateTime | LocalDateTime | 是 | 设置目标时间(精确到分钟级别) |
| repeatMonths | Array
<
number
>
| 否 | 设置重复提醒的月份,范围从 1 到 12 |
| repeatDays | Array
<
number
>
| 否 | 设置重复提醒的日期,范围从 1 到 31 |
interface ReminderRequestAlarm extends ReminderRequest: 闹钟类提醒实例。
**表9**
ReminderRequestAlarm
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| hour | number | 是 | 设置目标时间(小时),范围从 0 到 23 |
| minute | number | 是 | 设置目标时间(分钟),范围从 0 到 59 |
| daysOfWeek | Array
<
number
>
| 否 | 设置每个星期哪一天重复提醒,范围从 1 到 7 |
interface ReminderRequestTimer extends ReminderRequest:倒计时提醒实例
**表10**
ReminderRequestTimer
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| triggerTimeInSeconds | number | 是 | 设置倒计时秒数 |
interface LocalDateTime:时间信息实例
**表11**
LocalDateTime
| 参数名 | 类型 | 必填 | 描述 |
| -------- | -------- | -------- | -------- |
| year | number | 是 | 年 |
| month | number | 是 | 月 |
| day | number | 是 | 日 |
| hour | number | 是 | 时 |
| minute | number | 是 | 分 |
| second | number | 否 | 秒 |
| publishReminder(reminderReq:
ReminderRequest,
callback:
AsyncCallback
<
number
>
):
void
<br/>
publishReminder(reminderReq:
ReminderRequest):
Promise
<
number
>
| 发布一个定时提醒类通知。
<br/>
单个应用有效的提醒个数最多支持30个(不包括已经超时,即后续不会再提醒的提醒实例)
<br/>
整个系统有效的提醒个数最多支持2000个(不包括已经超时,即后续不会再提醒的提醒实例) |
| cancelReminder(reminderId:
number,
callback:
AsyncCallback
<
void
>
):
void
<br/>
cancelReminder(reminderId:
number):
Promise
<
void
>
| 取消一个指定的提醒类通知。(reminderId从publishReminder的返回值获取) |
| getValidReminders(callback:
AsyncCallback
<
Array
<
ReminderRequest
>>
):
void
<br/>
getValidReminders():
Promise
<
Array
<
ReminderRequest
>>
| 获取当前应用设置的所有有效的提醒。 |
| cancelAllReminders(callback:
AsyncCallback
<
void
>
):
void
<br/>
cancelAllReminders():
Promise
<
void
>
| 取消当前应用设置的所有提醒 |
| addNotificationSlot(slot:
NotificationSlot,
callback:
AsyncCallback
<
void
>
):
void
<br/>
addNotificationSlot(slot:
NotificationSlot):
Promise
<
void
>
| 注册一个提醒类需要使用的NotificationSlot |
| removeNotificationSlot(slotType:
notification.SlotType,
callback:
AsyncCallback
<
void
>
):
void
<br/>
removeNotificationSlot(slotType:
notification.SlotType):
Promise
<
void
>
| 删除指定类型的NotificationSlot |
## 开发步骤
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 应用需要配置权限:ohos.permission.PUBLISH_AGENT_REMINDER
>
> 1. 应用需要配置权限:ohos.permission.PUBLISH_AGENT_REMINDER。
>
> 2. 应用需要申请通知弹窗:[Notification.requestEnableNotification](../reference/apis/js-apis-notification.md#notificationrequestenablenotification8)。
发布一个10秒倒计时提醒
1.
定义一个提醒代理。
1.
定义一个倒计时实例
```
倒计时实例定义:
```
js
import
reminderAgent
from
'
@ohos.reminderAgent
'
;
import
notification
from
'
@ohos.notification
'
;
export
default
{
...
...
@@ -170,8 +66,97 @@ interface LocalDateTime:时间信息实例
}
```
2.
发布提醒
```
日历实例定义:
```js
// JS工程写法:
// calendar: {
// eTS工程写法:
let calendar : reminderAgent.ReminderRequestCalendar = {
reminderType: reminderAgent.ReminderType.REMINDER_TYPE_CALENDAR,
dateTime: {
year: 2050,
month: 7,
day: 30,
hour: 11,
minute: 14,
second: 30
},
repeatMonths: [1],
repeatDays: [1],
actionButton: [
{
title: "close",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
},
{
title: "snooze",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
},
],
wantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
maxScreenWantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
ringDuration: 5,
snoozeTimes: 2,
timeInterval: 5,
title: "this is title",
content: "this is content",
expiredContent: "this reminder has expired",
snoozeContent: "remind later",
notificationId: 100,
slotType: notification.SlotType.SOCIAL_COMMUNICATION
}
```
闹钟实例定义:
```js
// JS工程写法:
// alarm: {
// eTS工程写法:
let alarm : reminderAgent.ReminderRequestAlarm = {
reminderType: reminderAgent.ReminderType.REMINDER_TYPE_ALARM,
hour: 11,
minute: 14,
daysOfWeek: [0],
actionButton: [
{
title: "close",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
},
{
title: "snooze",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
},
],
wantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
maxScreenWantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
ringDuration: 5,
snoozeTimes: 2,
timeInterval: 5,
title: "this is title",
content: "this is content",
expiredContent: "this reminder has expired",
snoozeContent: "remind later",
notificationId: 100,
slotType: notification.SlotType.SOCIAL_COMMUNICATION
}
```
2.
发布倒计时提醒。
```
js
startTimer
()
{
reminderAgent
.
publishReminder
(
this
.
timer
,
(
err
,
reminderId
)
=>
{
this
.
printInfo
(
JSON
.
stringify
(
err
));
...
...
@@ -181,102 +166,12 @@ interface LocalDateTime:时间信息实例
```
HML页面:
```
```
html
<div
class=
"container"
>
<button
type=
"text"
value=
"publishReminder"
onclick=
"startTimer"
></button>
</div>
```
日历实例定义:
```
// JS工程写法:
// calendar: {
// eTS工程写法:
let calendar : reminderAgent.ReminderRequestCalendar = {
reminderType: reminderAgent.ReminderType.REMINDER_TYPE_CALENDAR,
dateTime: {
year: 2050,
month: 7,
day: 30,
hour: 11,
minute: 14,
second: 30
},
repeatMonths: [1],
repeatDays: [1],
actionButton: [
{
title: "close",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
},
{
title: "snooze",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
},
],
wantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
maxScreenWantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
ringDuration: 5,
snoozeTimes: 2,
timeInterval: 5,
title: "this is title",
content: "this is content",
expiredContent: "this reminder has expired",
snoozeContent: "remind later",
notificationId: 100,
slotType: notification.SlotType.SOCIAL_COMMUNICATION
}
```
闹钟实例定义:
```
// JS工程写法:
// alarm: {
// eTS工程写法:
let alarm : reminderAgent.ReminderRequestAlarm = {
reminderType: reminderAgent.ReminderType.REMINDER_TYPE_ALARM,
hour: 11,
minute: 14,
daysOfWeek: [0],
actionButton: [
{
title: "close",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
},
{
title: "snooze",
type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
},
],
wantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
maxScreenWantAgent: {
pkgName: "com.example.device",
abilityName: "com.example.device.MainAbility"
},
ringDuration: 5,
snoozeTimes: 2,
timeInterval: 5,
title: "this is title",
content: "this is content",
expiredContent: "this reminder has expired",
snoozeContent: "remind later",
notificationId: 100,
slotType: notification.SlotType.SOCIAL_COMMUNICATION
}
```
## 相关实例
基于后台代理提醒开发,有以下相关实例可供参考:
...
...
zh-cn/application-dev/reference/apis/js-apis-reminderAgent.md
浏览文件 @
2b086e3a
...
...
@@ -19,7 +19,7 @@ import reminderAgent from'@ohos.reminderAgent';
publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback
<
number
>
): void
发布一个后台代理提醒,使用callback方式实现异步调用。
发布一个后台代理提醒,使用callback方式实现异步调用
,该方法需要申请通知弹窗
[
Notification.requestEnableNotification
](
js-apis-notification.md#notificationrequestenablenotification8
)
后才能调用
。
**需要权限**
: ohos.permission.PUBLISH_AGENT_REMINDER
...
...
@@ -48,7 +48,7 @@ publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number&
publishReminder(reminderReq: ReminderRequest): Promise
<
number
>
发布一个后台代理提醒,使用Promise方式实现异步调用。
发布一个后台代理提醒,使用Promise方式实现异步调用
,该方法需要申请通知弹窗
[
Notification.requestEnableNotification
](
js-apis-notification.md#notificationrequestenablenotification8
)
后才能调用
。
**需要权限**
: ohos.permission.PUBLISH_AGENT_REMINDER
...
...
@@ -434,7 +434,7 @@ reminderAgent.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION).
## MaxScreenWantAgent
提醒到达时自动拉起的目标ability信息
。
全屏显示提醒到达时自动拉起的目标ability信息,该接口预留
。
**系统能力**
:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录