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
添加日历失败

扫码体验

代码示例

<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: 可添加日历的时间依赖于手机系统日历支持的时间范围,不同机型标准不同,与当前时间相距较远的日期可能会添加失败。