func createFixAlarm(_ ck: CKRecord, _ cdate: Date, _ block: ((Bool, String?)->Void)? = nil) async {
if cdate <= Date() {
JCTips.showTip("闹钟时间不可小于当前时间!")
block?(false, nil)
return
}
let keynoteDateComponents = DateComponents(
calendar: .current,
year: cdate.year,
month: cdate.month,
day: cdate.day,
hour: cdate.getOnComponent(.hour),
minute: cdate.getOnComponent(.minute))
let date = Calendar.current.date(from: keynoteDateComponents)!
typealias AlarmConfiguration = AlarmManager.AlarmConfiguration
let stopButton = AlarmButton(
text: "我知道了",
textColor: .white,
systemImageName: "stop.circle")
let alertPresentation = AlarmPresentation.Alert(
title: LocalizedStringResource(stringLiteral: ck[RecordData.title.rawValue] as? String ?? "快开始了!"),
stopButton: stopButton,
)
let attributes = AlarmAttributes<JCMeta>(
presentation: AlarmPresentation(
alert: alertPresentation),
metadata: JCMeta(),
tintColor: Color.accent)
let su = ck[RecordData.sound.rawValue] as? String
let alarmConfiguration = AlarmConfiguration(
schedule:.fixed(date),
attributes: attributes,stopIntent: StopAlarmIntent(),
sound: su == nil ? .default : .named(su!)
)
let id = UUID()
do {
let alarm = try await AlarmManager.shared.schedule(id: id, configuration: alarmConfiguration)
}catch {
}
}
Topic:
App & System Services
SubTopic:
General