更新记录

1.0.1(2023-12-13)

  1. 优化代码

1.0.0(2023-12-05)

  1. 日历事件管理(增删查改)
  2. 提醒事件管理(增删查改)

平台兼容性

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()

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android: 读写日历 ios: 日历、提醒事项 详细说明见文档

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问