更新记录
1.0.1(2023-12-13)
- 优化代码
1.0.0(2023-12-05)
- 日历事件管理(增删查改)
- 提醒事件管理(增删查改)
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
HBuilderX 3.6.8,Android:4.4,iOS:9,HarmonyNext:不确定 | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
日历事件管理(增删查改)提醒事件管理(增删查改)
配置权限
iOS:
"NSCalendarsUsageDescription" : "访问日历需要您的授权",
"NSRemindersUsageDescription" : "访问提醒事项需要您的授权"
android:
android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR
请求日历日程访问权限
if (this.isAndroid) {
// 请求android动态权限
this.requestPermissions([
"android.permission.READ_CALENDAR",
"android.permission.WRITE_CALENDAR"
]);
} else {
// 请求iOS权限
var entityType = 0 // 0: Event 1:Reminder
UTSEventStore.requestAccess(entityType, (resp) => {
var flag = resp.flag;
if (flag) { // 已授权
} else { // 未授权
}
this.showMsg(JSON.stringify(resp))
})
var entityType = 1 // 0: Event 1:Reminder
UTSEventStore.requestAccess(entityType, (resp) => {
var flag = resp.flag;
if (flag) { // 已授权
} else { // 未授权
}
this.showMsg(JSON.stringify(resp))
})
}
增加日历日程事件
ios:
var params = {}
// 标题
params.title = "标题1"
// 位置
params.location = "广州"
// 备注
params.notes = "备注00"
// url
params.url = "https://www.baidu.com"
// 开始时间
params.startDate = "2023-10-08 14:34:00"
// 结束时间
params.endDate = "2023-10-08 15:34:00"
// 是否全天
params.isAllDay = false
// 提醒
params.alarms = [
"2023-10-08 14:34:00"
]
// 重复
// params.recurrenceRules = [
// {
// recurrence: 0 ,// 重复 0:每天 1:每周 2: 每月 3:每年
// interval: 1, // 间隔
// daysOfTheWeek: [
// {
// dayOfTheWeek:1, //星期几 1->星期天;2->星期一;3->星期二;4->星期三;5->星期四;6->星期五;7->星期六;
// weekNumber: 1 // 周数
// }
// ],
// daysOfTheMonth:[], // 数组([+/-] 1 到 31)。负数推断从月底开始计数。例如,-1 表示该月的最后一天。仅对每月重复有效。否则忽略。
// monthsOfTheYear: [], //数组(1到12)。仅对年度重复有效。否则忽略
// weeksOfTheYear: [], // //数组([+/1] 1 到 53)。负数推断从年底开始计数。例如,-1 表示一年中的最后一周。仅对年度重复有效。否则忽略。
// daysOfTheYear:[], //数组([+/1] 1 到 366)。负数推断从年底开始计数。例如,-1 表示一年的最后一天。仅对年度重复有效。否则忽略。
// setPositions: [],//数组([+/1] 1 到 366)。在循环计算结束时用于过滤列表 到指定的位置。负数表示从末尾开始,即 -1 表示取集合的最后结果
// end: "2024-10-08 14:34:00" // 结束时间
// }
// ]
// 位置
params.structuredLocation = {
title: "广州", // 标题
latitude: 23.124060, //纬度
longitude: 113.370800, //经度
radius: 22 // 半径,单位米
}
params.span = 0 // 0: 当前事件,仅影响当前事件 1: 未来事件,影响这个事件及其后的一切
params.commit = true //false 暂存当前事件 但不提交到系统日历 true 立即提交存入系统日历
UTSEventStore.saveEvent(JSON.stringify(params), (resp) => {
var flag = resp.flag;
if (flag) { // 成功
} else { // 失败
}
this.showMsg(JSON.stringify(resp))
})
android:
if(this.calendar_id < 0) {
this.showToast("请先创建日历账号")
return
}
var start = Date.now() + 3000
var end = start + 10000
var params = {}
params.event = {
title: "开会啦",
description: "",
calendar_id: this.calendar_id,
dtstart: start,
dtend: end,
hasAlarm: 1
}
params.reminder = {
minutes: 1,
method: 1
}
UTSEventStore.saveEvent(JSON.stringify(params), (resp) => {
var flag = resp.flag;
if (flag) { // 成功
} else { // 失败
}
this.showMsg(JSON.stringify(resp))
})
查找日历日程事件
var params = {}
if(this.isAndroid) {
var start = Date.now() + 3000
var end = start + 10000
// params.projection = [] // 要返回的属性数组
params.selection = "dtend <= " + end // 筛选条件
// params.selectionArgs= [] // 筛选条件里?代表的值
params.sortOrder = "dtstart DESC" // 排序
} else {
var startTime = "2023-10-08 00:00:00"
var endTime = "2023-10-08 23:59:59"
params.startTime = startTime
params.endTime = endTime
}
UTSEventStore.getEvent(JSON.stringify(params), (resp) => {
var events = resp.events;
if (resp.events) {
if (resp.events.length > 0) {
this.eventIdentifier = resp.events[0].eventIdentifier
}
}
this.showMsg(JSON.stringify(resp))
})
删除日历日程(仅支持iOS)
let eventIdentifier = this.eventIdentifier // 通过接口getEvent获取日历事件的identifier
let span = 0 // 0: 当前事件,仅影响当前事件 1: 未来事件,影响这个事件及其后的一切
UTSEventStore.deleteEvent(eventIdentifier, span, (resp) => {
if (resp.flag) { // 成功
} else { // 失败
}
this.showMsg(JSON.stringify(resp))
})
添加提醒事项(仅支持iOS)
var params = {}
// params.calendarTitle = "app calendar" // 自定义提醒事项的分类,不传的话取系统默认值
// 标题
params.title = "提醒事项1"
// 位置
params.location = "广州"
// 备注
params.notes = "备注00"
// url
params.url = "https://www.baidu.com"
// 提醒
params.alarms = [
"2023-10-08 14:34:00"
]
params.commit = true //false 暂存当前事件 但不提交到系统日历 true 立即提交存入系统日历
UTSEventStore.saveReminder(JSON.stringify(params), (resp) => {
var flag = resp.flag;
if (flag) { // 成功
} else { // 失败
}
this.showMsg(JSON.stringify(resp))
})
查找提醒事项
var params = {}
// params.calendarTitle = "app calendar" // 自定义提醒事项的分类,不传的话取系统默认值
// 1. 查找已经完成的提醒事项
// params.type = "CompletedReminders"
// params.startTime = "2022-10-08 00:00:00" // 开始时间
// params.endTime = "2024-10-09 00:00:00"// 结束时间
// 2. 查找没有完成的提醒事项
// params.type = "IncompleteReminders"
// params.startTime = "2022-10-08 00:00:00" // 到期时间DueDate
// params.endTime = "2024-10-09 00:00:00"// 结束时间
// 3. 查找某个日历类型文件下的提醒事项
params.type = "CalendarForNewReminders"
UTSEventStore.getReminder(JSON.stringify(params), (resp) => {
if (resp.reminders) {
if (resp.reminders.length > 0) {
this.calendarItemIdentifier = resp.reminders[0].calendarItemIdentifier
}
}
console.log(this.calendarItemIdentifier)
this.showMsg(JSON.stringify(resp))
})
删除提醒事项
var params = {}
// params.calendarTitle = "app calendar" // 自定义提醒事项的分类,不传的话取系统默认值
// 1. 查找已经完成的提醒事项
// params.type = "CompletedReminders"
// params.startTime = "2022-10-08 00:00:00" // 开始时间
// params.endTime = "2024-10-09 00:00:00"// 结束时间
// 2. 查找没有完成的提醒事项
// params.type = "IncompleteReminders"
// params.startTime = "2022-10-08 00:00:00" // 到期时间DueDate
// params.endTime = "2024-10-09 00:00:00"// 结束时间
// 3. 查找某个日历类型文件下的提醒事项
params.type = "CalendarForNewReminders"
// 删除事项的calendarItemIdentifier
console.log(this.calendarItemIdentifier)
params.calendarItemIdentifier = this.calendarItemIdentifier + "sss"
UTSEventStore.deleteReminder(JSON.stringify(params), (resp) => {
console.log("deleteReminder")
// this.showMsg(JSON.stringify(resp))
})
创建日历账号(仅支持Android)
Android添加日历事件时,需要传入账号
var params = {}
params.calendar = {
name: "testCalendar",
account_name: "252797991@qq.com",
account_type: "com.android.test",
calendar_displayName: "Test账户",
visible: 1,
calendar_color: 0xFF0000FF,
calendar_access_level: 700,
sync_events: 1,
ownerAccount: "252797991@qq.com",
canOrganizerRespond: 0
}
params.url = {
caller_is_syncadapter: "true",
account_name: "252797991@qq.com",
account_type: "com.android.test"
}
let id = UTSEventStore.addCalendarAccount(JSON.stringify(params))
查找日历账号
let oldId = UTSEventStore.checkCalendarAccount()