button组件写入系统日历收藏我的收藏
收藏
我的收藏基础库 2.93.0 开始支持本能力。支持添加用户日历,需要将 button 组件 open-type 的值设置为 addCalendarEvent。
提供写入系统日历的能力。该能力需申请权限使用,满足申请条件后,开发者登录控制台,在小程序应用中筛选“能力-互动能力-系统能力”,同时申请添加日历/查询日历/删除日历能力,能力使用规范详情查看日历能力开通及使用规范; 申请条件如下:
- 1.信用分 >= 90分
- 2.服务类目
一级类目 | 二级类目 | 三级类目 |
电商 | 电商插件 | 任务玩法、营销权益、创意互动、商品展示、推荐导购、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: 可添加日历的时间依赖于手机系统日历支持的时间范围,不同机型标准不同,与当前时间相距较远的日期可能会添加失败。