UWP应用添加系统日历约会如何跳过确认弹窗并上架商店?
可行方案:改用CalendarStore API直接创建约会
在UWP中,AddAppointmentsAsync本身就是设计为需要用户确认的API,这是系统的安全限制,无法直接跳过(除非用rescap:appointmentsSystem,但确实过不了商店审核)。不过你可以改用CalendarStore API来实现无弹窗添加约会,且完全符合商店审核要求:
第一步:确保清单中只声明常规日历权限,不要加系统级权限:
<uap:Capability Name="appointments"/>第二步:先请求用户授权应用访问日历(首次启动会弹授权弹窗,用户同意后后续无需重复授权):
var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);如果用户拒绝授权,需要在应用内提示用户去系统设置中开启权限。
第三步:获取目标日历(比如默认日历)并创建约会:
// 获取默认日历文件夹 var defaultCalendar = await store.GetDefaultCalendarAsync(); // 创建约会对象并设置属性 var newAppointment = new Appointment { Subject = "你的约会标题", StartTime = DateTimeOffset.Now.AddHours(2), Duration = TimeSpan.FromHours(1), Location = "约会地点", Details = "约会详情" }; // 直接添加到日历,无额外确认弹窗 await defaultCalendar.CreateAppointmentAsync(newAppointment);
关键说明
- CalendarStore API是微软官方提供的常规日历操作接口,只要用户授权了应用的日历访问权限,就能直接创建/修改/删除约会,不需要额外的确认弹窗。
- 这种方式完全符合商店审核规则,因为使用的是公开的
uap:appointments权限,没有涉及系统级受限权限。 - 首次授权的弹窗是隐私合规要求,无法跳过,但这是一次性操作,用户同意后后续操作都不会再弹。
内容的提问来源于stack exchange,提问作者Charith
相关产品推荐
相关产品推荐

