button组件写入系统日历
收藏我的收藏
基础库 2.93.0 开始支持本能力。支持添加用户日历,需要将 button 组件 open-type 的值设置为 addCalendarEvent。
提供写入系统日历的能力。该能力需申请权限使用,满足申请条件后,开发者登录控制台,在小程序应用中筛选“能力-互动能力-系统能力”,同时申请添加日历/查询日历/删除日历能力,能力使用规范详情查看日历能力开通及使用规范;申请条件如 下:
准入条件
能力的准入条件如下:
1.账号主体需为企业主体
2.小程序已上线。
3.信用分不低于 90 分
4.小程序主营类目符合类目条件
一级类目 | 二级类目 | 三级类目 |
电商 | 商家工具 | 任务玩法 |
电商 | 商家工具 | 权益营销 |
电商 | 商家工具 | 创意互动 |
电商 | 商家工具 | 商品展示 |
电商 | 商家工具 | 推荐导购 |
电商 | 商家工具 | C2B购后定制 |
电商 | 商家工具 | 特殊交易 |
电商 | 商家工具 | 线下服务/线下活动 |
电商 | 商家工具 | 售后/其他品牌服务 |
餐饮 | 餐饮 | 餐饮门店 |
餐饮 | 餐饮 | 美食团购平台 |
餐饮 | 餐饮 | 外卖平台 |
酒店旅游 | 酒店旅游 | 酒店住宿 |
酒店旅游 | 酒店旅游 | 景区服务 |
酒店旅游 | 酒店旅游 | 旅行社 |
酒店旅游 | 酒店旅游 | 酒旅平台 |
生活服务 | 生活服务 | 丽人 |
生活服务 | 生活服务 | 宠物医院/兽医 |
生活服务 | 生活服务 | 摄影/扩印 |
生活服务 | 生活服务 | 婚庆服务 |
生活服务 | 生活服务 | 搬家服务 |
生活服务 | 生活服务 | 洗浴保健 |
生活服务 | 生活服务 | 家政服务 |
生活服务 | 生活服务 | 营业性演出票务 |
生活服务 | 生活服务 | 生活缴费 |
生活服务 | 生活服务 | 休闲玩乐平台 |
生活服务 | 生活服务 | 传统娱乐 |
生活服务 | 生活服务 | 酒吧 |
生活服务 | 生活服务 | 电影院 |
生活服务 | 生活服务 | 网吧网咖 |
生活服务 | 生活服务 | 宠物服务 |
生活服务 | 生活服务 | 高空清洗 |
生活服务 | 生活服务 | 鲜花/园艺 |
生活服务 | 生活服务 | 月嫂/育儿嫂 |
生活服务 | 生活服务 | 电路检测维修 |
生活服务 | 生活服务 | 防水补漏/装修修缮 |
生活服务 | 生活服务 | 燃烧器具安装/维修 |
属性说明
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
open-type | string | | 是 | 用于调用开放能力,此场景下需要设置为 "addCalendarEvent" | 2.93.0 |
data-calendar-options | CalendarOptions | | 是 | 添加用户系统日历参数 | 2.93.0 |
bindaddcalendarevent | EventHandle | | 否 | 监听添加日历的回调,open-type=addCalendarEvent时有效 | 2.93.0 |
CalendarOptions
为 object 类型,属性如下:
属性名 | 类型 | 默认值 | 必填 | 说明 | 最低支持版本 |
title | string | | 是 | 日历事件标题 | 2.93.0 |
description | string | "" | 否 | 事件说明 | 2.93.0 |
startTime | number | | 是 | 开始时间的 unix 时间戳(1970年1月1日开始所经过的时间),需要距离添加当日180天内 | 2.93.0 |
endTime | number | 与 startTime 相同 | 否 | 结束时间的 unix 时间戳(1970年1月1日开始所经过的时间),距离开始时间30天内 | 2.93.0 |
location | string | "" | 否 | 事件位置 | 2.93.0 |
alarm | bool | FALSE | 否 | 是否设置提醒 | 2.93.0 |
alarmOffset | number | 0 | 否 | 提醒提前量(单位:分钟) | 2.93.0 |
bindaddcalendarevent
事件对象的 detail
回调成功
Object 类型,属性如下:
参数 | 参数类型 | 说明 |
errMsg | string | 跳转成功信息,恒为 'addCalendarEvent:ok' |
errNo | number | 恒为0 |
回调失败
Object 类型, 属性如下:
参数 | 参数类型 | 说明 |
errMsg | string | 跳转失败信息,以 'addCalendarEvent:fail' 开头 |
errNo | number | 错误代码 |
错误说明
errNo | errMsg | 说明 |
10200 | addCalendarEvent:fail auth deny | 用户未授权小程序权限 |
10200 | addCalendarEvent:fail system auth deny | 用户未授权系统权限 |
21101 | addCalendarEvent:fail create calendar account fail | 创建日历账户失败 |
21102 | addCalendarEvent:fail second pop-up window authorization failed | 用户拒绝二次确认弹窗授权 |
21104 | addCalendarEvent:fail add event fail | 添加日历失败 |
扫码体验
代码示例
<button open-type="addCalendarEvent" bindaddcalendarevent="eventHandler" data-calendar-options="{{calendarOptions}}" > 写日系统日历 </button>
Page({ data: { calendarOptions: { title: "事件标题", startTime: new Date("2023-08-20T12:00:00").getTime() / 1000, endTime: new Date("2022-08-21T12:00:00").getTime() / 1000, description: "事件描述", location: "事件地址", alarm: true, alarmOffset: 5, }, }, eventHandler(e) { if (e.detail.errNo) { console.log("添加日历事件失败", e.detail); } else { console.log("添加日历事件成功"); } }, });
Bug & Tip
- •Tip:startTime 与endTime 的有效精度均为分钟
- •Tip:任何非必传的不合理参数(比如 endTime 比 startTime 要早、unix 时间戳传入浮点数、alarmOffset 为负数或浮点数等)都会被转化为默认值
- •Tip: 可添加日历的时间依赖于手机系统日历支持的时间范围,不同机型标准不同,与当前时间相距较远的日期可能会添加失败。