当前位置: 首页 > wzjs >正文

如何用手机建网站搜外友链平台

如何用手机建网站,搜外友链平台,网费一年多少钱,外省公司做网站备案1. 核心方法 使用 UNCalendarNotificationTrigger 的 dateMatching 参数配置日历组件(DateComponents),结合 repeats: true 实现周期性触发。 2. 不同频率的重复推送配置 2.1 每日重复 每天固定时间触发(如上午 10:00&#xff…
1. 核心方法

使用 UNCalendarNotificationTriggerdateMatching 参数配置日历组件(DateComponents),结合 repeats: true 实现周期性触发。


2. 不同频率的重复推送配置

2.1 每日重复

每天固定时间触发(如上午 10:00):

var components = DateComponents()
components.hour = 10  // 小时(24 小时制)
components.minute = 0 // 分钟let trigger = UNCalendarNotificationTrigger(dateMatching: components,repeats: true
)
2.2 每周重复

每周特定星期几触发(如每周五下午 3:00):

var components = DateComponents()
components.weekday = 6     // 1=周日, 2=周一...6=周五, 7=周六
components.hour = 15
components.minute = 0let trigger = UNCalendarNotificationTrigger(dateMatching: components,repeats: true
)
2.3 每月重复

每月特定日期触发(如每月 15 日上午 9:00):

var components = DateComponents()
components.day = 15    // 每月 15 日
components.hour = 9
components.minute = 0let trigger = UNCalendarNotificationTrigger(dateMatching: components,repeats: true
)
2.4 每年重复

每年特定日期触发(如每年 12 月 25 日 8:00):

var components = DateComponents()
components.month = 12  // 12 月
components.day = 25    // 25 日
components.hour = 8
components.minute = 0let trigger = UNCalendarNotificationTrigger(dateMatching: components,repeats: true
)
2.5 自定义间隔重复

通过 UNTimeIntervalNotificationTrigger 实现固定间隔重复(如每隔 2 小时):

// 注意:repeats 为 true 时,timeInterval 必须 ≥ 60 秒
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 7200, // 2 小时 = 60*60*2 秒repeats: true
)

3. 完整代码示例(SwiftUI 中实现)

以下示例展示如何创建一个允许用户选择重复频率(每日、每周、每月)的通知功能。

import SwiftUI
import UserNotificationsstruct RepeatingNotificationView: View {// 用户选择的重复类型enum RepeatType: String, CaseIterable {case daily = "每日"case weekly = "每周"case monthly = "每月"}@State private var selectedRepeat: RepeatType = .daily@State private var notificationTime = Date()@State private var showAlert = false@State private var alertMessage = ""var body: some View {Form {// 选择重复类型Picker("重复频率", selection: $selectedRepeat) {ForEach(RepeatType.allCases, id: \.self) { type inText(type.rawValue)}}// 选择时间DatePicker("提醒时间", selection: $notificationTime, displayedComponents: .hourAndMinute)Button("保存提醒") {scheduleRepeatingNotification()}}.alert("提示", isPresented: $showAlert) {Button("确定") { }} message: {Text(alertMessage)}}// 调度重复通知private func scheduleRepeatingNotification() {let content = UNMutableNotificationContent()content.title = "\(selectedRepeat.rawValue)提醒"content.body = "这是您的\(selectedRepeat.rawValue)提醒!"content.sound = .default// 根据用户选择生成触发器let trigger: UNCalendarNotificationTrigger = {let components = Calendar.current.dateComponents([.hour, .minute, .weekday, .day],from: notificationTime)var triggerComponents = DateComponents()switch selectedRepeat {case .daily:triggerComponents.hour = components.hourtriggerComponents.minute = components.minutecase .weekly:triggerComponents.weekday = components.weekdaytriggerComponents.hour = components.hourtriggerComponents.minute = components.minutecase .monthly:triggerComponents.day = components.daytriggerComponents.hour = components.hourtriggerComponents.minute = components.minute}return UNCalendarNotificationTrigger(dateMatching: triggerComponents,repeats: true)}()// 创建并添加通知请求let identifier = "\(selectedRepeat.rawValue)_\(Date().timeIntervalSince1970)"let request = UNNotificationRequest(identifier: identifier,content: content,trigger: trigger)UNUserNotificationCenter.current().add(request) { error inDispatchQueue.main.async {if let error = error {alertMessage = "添加失败: \(error.localizedDescription)"} else {alertMessage = "\(selectedRepeat.rawValue)提醒已设置!"}showAlert = true}}}
}

4. 关键注意事项

  1. 标识符管理

    • 使用唯一 identifier(如结合时间戳),避免重复通知被覆盖。
    • 示例:let identifier = "weekly_\(UUID().uuidString)"
  2. 时区处理

    • 默认使用系统时区,可通过 components.timeZone 指定特定时区:
      triggerComponents.timeZone = TimeZone(identifier: "Asia/Shanghai")
      
  3. 用户权限

    • 确保已授权通知权限(UNUserNotificationCenter.current().getNotificationSettings)。
  4. 重复限制

    • UNTimeIntervalNotificationTrigger 的重复间隔必须 ≥ 60 秒。
    • 日历触发器的 dateMatching 必须包含足够字段(如每周重复需设置 weekday)。
  5. 前台通知处理

    • 应用在前台时默认不显示通知,需实现 UNUserNotificationCenterDelegate
      func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification) async -> UNNotificationPresentationOptions {return [.banner, .sound]
      }
      

5. 应用场景示例

  • 每日提醒:早晨 7 点喝水提醒。
  • 每周提醒:每周五下午 5 点提交工作报告。
  • 每月提醒:每月 1 日缴纳房租。
  • 自定义间隔:每隔 2 小时提醒休息(需 UNTimeIntervalNotificationTrigger)。

总结

  • 核心类UNCalendarNotificationTrigger + DateComponents 实现灵活重复规则。
  • 用户体验:通过 SwiftUI 表单让用户自定义频率和时间。
  • 最佳实践:合理管理通知标识符,避免重复或无效通知。

通过合理设计重复通知逻辑,可以满足大部分周期性提醒需求,同时保持代码简洁和可维护性。

http://www.dtcms.com/wzjs/323550.html

相关文章:

  • 网络教育室内设计专业seo自学网官方
  • 如何在阿里巴巴建设网站seo公司外包
  • 物流公司会计好做吗安徽seo优化
  • asp 做网站的缺点营销成功的案例
  • win8网站模板有必要买优化大师会员吗
  • 如何利用网站模板做网站许昌seo公司
  • 北京网站建设项目企点qq
  • 360安全网址百度搜索优化关键词排名
  • 免费效果图网站软文有哪几种类型
  • 做网站需要注意什么十种营销方式
  • 中为网站建设2020十大网络热词
  • 怎么做视频网站赚钱吗网络营销app有哪些
  • 哪家网站专做女性服装网站媒体推广
  • 做网站编辑应该注意什么宁德市委书记
  • 什么网站可以做设计兼职搜索引擎收录提交入口
  • python做网站吗掌门一对一辅导官网
  • 合肥网站建设设计中文搜索引擎
  • 申请做网站 论坛版主网站优化公司哪个好
  • 请简述网站建设的一般流程百度地址如何设置门店地址
  • 做网站成都品牌宣传策划方案
  • 游戏网站做关键字我的百度账号
  • 福州专业网站建设公司网络营销价格策略有哪些
  • 吉林省四平市网站建设成都达洱狐网络科技有限公司
  • 淘客网站建设视频英文seo是什么意思
  • 昆山玉山网站建设推广普通话宣传周
  • 域名后缀一览表百度自动优化
  • 个人域名注册需要哪些条件搜索引擎优化涉及的内容
  • 分析网站免费推广平台哪些比较好
  • 怎样建官方网站公司怎么做网站推广
  • 网站建设图片大小2022年适合小学生的新闻