更新记录
1.2.0(2022-08-10)
本次主要更新: 1.修复查询事件,只能查询2021年的bug
1.1.0(2022-02-24)
本次主要更新: 1.添加提醒事项,title没有设置成功
1.0.0(2021-06-01)
首次更新
查看更多平台兼容性
Android | iOS |
---|---|
× | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
KJ-AddCalendarEvent
日历、提醒事项 添加日程和提醒(ios)
引入插件
const KJAddCalendarEventModule = uni.requireNativePlugin('KJ-AddCalendarEventModule');
相关代码
<template>
<view>
<button type="primary" @click="requestAccess">请求使用用户的日历数据库</button>
<button type="primary" @click="saveEvent">保存事件(日程)</button>
<button type="primary" @click="inquireEvent">查询事件(日程)</button>
<button type="primary" @click="removeEvent">删除事件(日程)</button>
<button type="primary" @click="saveReminder">保存提醒事项</button>
<button type="primary" @click="inquireReminder">查询提醒事项</button>
<button type="primary" @click="removeReminder">删除提醒事项</button>
<button type="primary" @click="commit">提交</button>
<button type="primary" @click="showEventEditVC_add">显示系统(添加)事件界面</button>
<button type="primary" @click="showEventEditVC_edit">显示系统(编辑)事件界面</button>
</view>
</template>
<script>
const KJAddCalendarEventModule = uni.requireNativePlugin('KJ-AddCalendarEventModule');
export default {
onLoad() {
},
methods: {
requestAccess() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
console.log("可以使用")
}else {
console.log("不可以使用,原因:"+res.error);
}
});
},
saveEvent() {
//请求使用用户的日历数据库
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.saveEvent({
"eventIdentifier": null, //事件唯一ID,如果不为null,则是编辑当前,为null,则新增
"title": "标题",
"location": "位置信息",
"notes": "备注",
"startDateStr": "2021-5-1 01:00:00", //开始时间,日期格式yyyy-MM-dd HH:mm:ss
"endDateStr": "2021-12-31 01:00:00", //结束时间,日期格式yyyy-MM-dd HH:mm:ss
"allDay": false, //是否全天
"URLStr": "",
"alarms": [{ //提醒
"dateStr": "2021-5-26 17:00:00"//提醒时间,日期格式yyyy-MM-dd HH:mm:ss
}],
"recurrenceRules": [{ //重复
"frequency": "Daily", //重复的类型 Daily->按天; Weekly->按周; Monthly->按月; Yearly->按年
"interval": 1, //间隔
"daysOfTheWeeks": [{//数组。适用于除每日以外的所有重复类型。否则忽略。
"dayOfWeek": 5,//星期几 1->星期天;2->星期一;3->星期二;4->星期三;5->星期四;6->星期五;7->星期六;
"weekNumber": 1//周数
}],
"daysOfTheMonths": [],//数组([+/-] 1 到 31)。负数推断从月底开始计数。例如,-1 表示该月的最后一天。仅对每月重复有效。否则忽略。
"monthsOfTheYears": [],//数组(1到12)。仅对年度重复有效。否则忽略
"weeksOfTheYears": [],//数组([+/1] 1 到 53)。负数推断从年底开始计数。例如,-1 表示一年中的最后一周。仅对年度重复有效。否则忽略。
"daysOfTheYears": [],//数组([+/1] 1 到 366)。负数推断从年底开始计数。例如,-1 表示一年的最后一天。仅对年度重复有效。否则忽略。
"setPositions": [],//数组([+/1] 1 到 366)。在循环计算结束时用于过滤列表 到指定的位置。负数表示从末尾开始,即 -1 表示取集合的最后结果
"endDateStr": "",//循环结束时间
}],
"structuredLocation": { //位置
"title": "", //标题
"latitude": 0, //纬度
"longitude": 0, //经度
"radius": 0 //半径
},
"span": "ThisEvent", //ThisEvent->仅影响当前事件 FutureEvents->影响这个事件及其后的一切
"commit": true //false 暂存当前事件 但不提交到系统日历 true 立即提交存入系统日历
}, (res) => {
console.log(JSON.stringify(res))
})
}
});
},
inquireEvent() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.inquireEvent({
"startDateStr": "2021-1-1 0:0:0", //开始时间,日期格式yyyy-MM-dd HH:mm:ss
"endDateStr": "2021-12-31 0:0:0", //结束时间,日期格式yyyy-MM-dd HH:mm:ss
"isFilterSameEventIdentifier": false //是否过滤相同的eventIdentifier
}, (res) => {
console.log(JSON.stringify(res))
})
}
});
},
removeEvent() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.inquireEvent({
"startDateStr": "2021-1-1 0:0:0", //开始时间,日期格式yyyy-MM-dd HH:mm:ss
"endDateStr": "2021-12-31 0:0:0", //结束时间,日期格式yyyy-MM-dd HH:mm:ss
"isFilterSameEventIdentifier": false //是否过滤相同的eventIdentifier
}, (res) => {
console.log(JSON.stringify(res))
var arr = res.result;
var dic = arr[0];
KJAddCalendarEventModule.removeEvent({
"eventIdentifier": dic.eventIdentifier,
"span": "ThisEvent", //ThisEvent->仅影响当前事件 FutureEvents->影响这个事件及其后的一切
"commit": true //false 暂存当前事件 但不提交到系统日历 true 立即提交存入系统日历
}, (res) => {
console.log(JSON.stringify(res))
})
})
}
});
},
saveReminder() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Reminder" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.saveReminder({
"title": "标题",
"startDateComponentsStr": "2021-5-1 01:00:00", //开始提醒的日期,日期格式yyyy-MM-dd HH:mm:ss
"dueDateComponentsStr": "2021-12-31 01:00:00", //预期完成提醒的日期,日期格式yyyy-MM-dd HH:mm:ss
"completed": false, //设置true将把实际完成的日期设置为当前日期。
"completionDateStr": "", //实际完成提醒的日期,日期格式yyyy-MM-dd HH:mm:ss
"priority": 0, //优先级1-4被认为是“高”,优先级5被认为是“中”,而优先级6-9被认为是“低”。
"alarms": [{ //提醒
"dateStr": "2021-5-26 17:00:00"//提醒时间,日期格式yyyy-MM-dd HH:mm:ss
}],
"recurrenceRules": [{ //重复
"frequency": "Daily", //重复的类型 Daily->按天; Weekly->按周; Monthly->按月; Yearly->按年
"interval": 1, //间隔
"daysOfTheWeeks": [{//数组。适用于除每日以外的所有重复类型。否则忽略。
"dayOfWeek": 5,//星期几 1->星期天;2->星期一;3->星期二;4->星期三;5->星期四;6->星期五;7->星期六;
"weekNumber": 1//周数
}],
"daysOfTheMonths": [],//数组([+/-] 1 到 31)。负数推断从月底开始计数。例如,-1 表示该月的最后一天。仅对每月重复有效。否则忽略。
"monthsOfTheYears": [],//数组(1到12)。仅对年度重复有效。否则忽略
"weeksOfTheYears": [],//数组([+/1] 1 到 53)。负数推断从年底开始计数。例如,-1 表示一年中的最后一周。仅对年度重复有效。否则忽略。
"daysOfTheYears": [],//数组([+/1] 1 到 366)。负数推断从年底开始计数。例如,-1 表示一年的最后一天。仅对年度重复有效。否则忽略。
"setPositions": [],//数组([+/1] 1 到 366)。在循环计算结束时用于过滤列表 到指定的位置。负数表示从末尾开始,即 -1 表示取集合的最后结果
"endDateStr": "",//循环结束时间
}],
"commit": true //false 暂存当前事件 但不提交到系统日历 true 立即提交存入系统日历
}, (res) => {
console.log(JSON.stringify(res))
})
}
});
},
inquireReminder() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Reminder" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.inquireReminder((res) => {
console.log(JSON.stringify(res))
})
}
});
},
removeReminder() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Reminder" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.removeReminder({
"index": 0, //inquireReminder 查询到的index
"commit": true //false 暂存当前事件 但不提交到系统日历 true 立即提交存入系统日历
}, (res) => {
console.log(JSON.stringify(res))
})
}
});
},
commit() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.commit((res) => {
console.log(JSON.stringify(res))
})
}
});
},
showEventEditVC_add() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.showEventEditVC({
"eventIdentifier": null, //事件唯一ID,如果不为null,则是编辑当前,为null,则新增
}, (res) => {
console.log(JSON.stringify(res))
var action = res.action;
if(action == "Canceled") {
console.log("取消")
}else if(action == "Saved") {
console.log("保存")
}else if(action == "Deleted") {
console.log("删除")
}
})
}
});
},
showEventEditVC_edit() {
KJAddCalendarEventModule.requestAccess({
"entityType": "Event" //Event-事件(日程),Reminder-提醒事项
}, (res) => {
console.log(JSON.stringify(res))
if (res.granted) {
KJAddCalendarEventModule.inquireEvent({
"startDateStr": "2021-1-1 0:0:0", //开始时间,日期格式yyyy-MM-dd HH:mm:ss
"endDateStr": "2021-12-31 0:0:0", //时间,日期格式yyyy-MM-dd HH:mm:ss
"isFilterSameEventIdentifier": true //是否过滤相同的eventIdentifier
}, (res) => {
console.log(JSON.stringify(res))
var arr = res.result;
var dic = arr[0];
KJAddCalendarEventModule.showEventEditVC({
"eventIdentifier": dic
.eventIdentifier, //事件唯一ID,如果不为null,则是编辑当前,为null,则新增
}, (res) => {
console.log(JSON.stringify(res));
var action = res.action;
if(action == "Canceled") {
console.log("取消")
}else if(action == "Saved") {
console.log("保存")
}else if(action == "Deleted") {
console.log("删除")
}
})
})
}
});
}
},
}
</script>