微信小程序向系统日历添加事件(提醒)实现
直接上代码
// pages/calendar/calendar.js
Page({
// 点击添加日程按钮
handleAddCalendar() {
wx.getSetting({
success(res) {
// 判断是否已经授权
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// 用户已授权,调用添加日程 API
wx.addPhoneCalendar({
title: '会议', // 日程标题,必填项
startTime: new Date('2023/04/15 09:00').getTime()/1000, // 日程开始时间,必填项
endTime: new Date('2023/04/15 12:00').getTime()/1000, // 日程结束时间,必填项
location: '北京市朝阳区东三环北路', // 日程地点,非必填项
notes: '请大家准时参加会议', // 日程备注,非必填项
success(res) {
console.log(res) // 日程添加成功的回调函数
wx.showToast({
title: '添加日程成功',
icon: 'success',
duration: 2000
})
},
fail(res) {
console.log(res) // 日程添加失败的回调函数
wx.showToast({
title: '添加日程失败',
icon: 'none',
duration: 2000
})
}
})
},
fail() {
// 用户拒绝授权,提示用户授权
wx.showToast({
title: '请先授权',
icon: 'none',
duration: 2000
})
}
})
} else {
// 已经授权,调用添加日程 API
wx.addPhoneCalendar({
title: '会议', // 日程标题,必填项
startTime: new Date('2023/04/15 09:00').getTime()/1000, // 日程开始时间,必填项
endTime: new Date('2023/04/15 12:00').getTime()/1000, // 日程结束时间,必填项
location: '北京市朝阳区东三环北路', // 日程地点,非必填项
notes: '请大家准时参加会议', // 日程备注,非必填项
success(res) {
console.log(res) // 日程添加成功的回调函数
wx.showToast({
title: '添加日程成功',
icon: 'success',
duration: 2000
})
},
fail(res) {
console.log(res) // 日程添加失败的回调函数
wx.showToast({
title: '添加日程失败',
icon: 'none',
duration: 2000
})
}
})
}
}
})
}
})
使用 wx.addPhoneCalendar 需要满足以下前置条件:
-
微信版本支持:wx.addPhoneCalendar 是微信小程序的 API,只有在微信版本号大于等于 6.6.6 的环境下才能使用。
-
用户授权:在用户手机的日历中添加日程需要获取用户授权,用户需要在小程序中点击授权按钮才能进行操作。授权按钮可以通过 <button open-type="openSetting"> 组件实现。
-
合法域名:使用 wx.addPhoneCalendar 的小程序必须在小程序管理后台配置合法域名,包括 wx.addPhoneCalendar 的调用域名和日历服务域名。在开发阶段可以使用开发者工具自带的“不校验合法域名、Web-view(业务域名)、TLS 版本以及 HTTPS 证书”选项进行调试。
注意:由于用户的隐私安全问题,小程序只能添加到用户选择的日历中,无法选择具体的日历。getTime()需要除1000
参考: