button组件写入系统日历
收藏
我的收藏

基础库 2.93.0 开始支持本能力。支持添加用户日历,需要将 button 组件 open-type 的值设置为 addCalendarEvent。​
button 组件常规属性请参考button 按钮。​
提供写入系统日历的能力。该能力需申请权限使用,满足申请条件后,开发者登录控制台,在小程序应用中筛选“能力-互动能力-系统能力”,同时申请添加日历/查询日历/删除日历能力,能力使用规范详情查看日历能力开通及使用规范;申请条件如下:​
    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​
添加日历失败​

扫码体验​

代码示例​

HTML
复制
<button
open-type="addCalendarEvent"
bindaddcalendarevent="eventHandler"
data-calendar-options="{{calendarOptions}}"
>
写日系统日历
</button>
JavaScript
复制
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: 可添加日历的时间依赖于手机系统日历支持的时间范围,不同机型标准不同,与当前时间相距较远的日期可能会添加失败。​