自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 8.2 通过 Combine 监听通知事件

使用 Combine 框架监听通知事件可以创建更加响应式和声明式的通知处理系统。

2025-04-09 03:54:52 81

原创 8.1 使用 ObservableObject 管理通知逻辑

在 SwiftUI 中,使用来管理通知逻辑可以有效地将业务逻辑与视图分离,使代码更加清晰和可维护。

2025-04-09 03:47:26 80

原创 7.4 后台任务与本地推送的结合(如定时更新数据后触发通知)

通过此方案,应用可在后台静默更新数据,并在内容变化时及时通知用户,同时符合 iOS 后台任务规范。实际项目中需根据业务需求调整数据获取和通知触发逻辑。的场景(如每日新闻摘要、天气预报更新等)。在 iOS 中,后台任务与本地推送的结合可以实现。

2025-04-09 03:44:57 157

原创 7.3 在通知中显示图片或视频(UNNotificationAttachment)

在iOS通知中显示富媒体内容可以显著提升用户体验。通过,我们可以为本地和远程通知添加图片、音频、视频等内容。

2025-04-08 22:30:52 167

原创 7.2 重复推送(每日、每周等)

通过合理设计重复通知逻辑,可以满足大部分周期性提醒需求,同时保持代码简洁和可维护性。以下示例展示如何创建一个允许用户选择重复频率(每日、每周、每月)的通知功能。

2025-04-08 22:24:51 197

原创 SwiftUI 本地推送(Local Notification)教程目录

【代码】SwiftUI 本地推送(Local Notification)教程目录。

2025-04-08 20:45:00 226

原创 7.1 动态更新或取消已计划的推送

通过灵活管理通知队列,可以实现高度动态化的提醒功能,同时避免冗余或无效通知干扰用户。由于 iOS 不直接提供“更新”通知的 API,需通过。获取当前队列中的通知列表,用于调试或动态管理。

2025-04-08 16:55:15 598

原创 6.2 常见问题解决

权限问题首次检查状态并请求权限如果.denied,引导用户去设置开启检查具体权限(横幅/声音/角标)勿扰模式检测状态在勿扰模式下,通知可能只出现在通知中心而不显示横幅静音模式通过检查音量静音模式下可能没有声音但仍有视觉通知其他系统设置检查"屏幕使用时间"中的限制检查"专注模式"设置。

2025-04-08 16:42:38 408

原创 6.1 在模拟器和真机上的调试技巧

(return logs . joined(separator : "\n") } } // 使用示例 NotificationLogger . shared . log("安排通知: \( identifier) ")return logs . joined(separator : "\n") } } // 使用示例 NotificationLogger . shared . log("安排通知: \( identifier) ")\(

2025-04-08 16:16:46 353

原创 5.3 在 SwiftUI 中跳转到特定视图(使用 NavigationLink 或状态绑定)

当用户点击通知或与通知交互时,通常需要导航到应用内的特定视图。

2025-04-08 16:10:32 436

原创 5.2 自定义通知操作按钮(UNNotificationAction)

/ 定义动作按钮title: "👍 喜欢",options: [.foreground] // 点击后是否启动应用title: "💬 回复",textInputButtonTitle: "发送",textInputPlaceholder: "输入回复内容..."// 定义类别(可以关联多个动作)options: [.customDismissAction] // 自定义选项// 注册类别。

2025-04-08 16:04:55 332

原创 5.1 点击通知打开应用时的处理

/ AppDelegate.swift(部分代码)// 发送全局通知,携带 userInfoText("通知内容:\(// AppDelegate.swift(部分代码) func userNotificationCenter(_ center : UNUserNotificationCenter , didReceive response : UNNotificationResponse) async {

2025-04-08 15:35:44 216

原创 4.4 在 SwiftUI 中触发通知的完整代码示例

此示例可直接运行,覆盖了本地通知的核心场景,适合作为功能模板集成到实际项目中。

2025-04-07 16:46:43 160

原创 4.3 将通知添加到队列

通过合理管理通知队列,可以实现复杂的提醒逻辑,同时避免重复或无效通知干扰用户。)添加到系统队列中。系统会根据触发器自动调度通知的触发时间。方法,将构建好的通知请求(

2025-04-07 16:37:02 356

原创 4.2 设置通知触发器

用于在特定日期和时间触发通知,支持复杂日历规则(如每天、每周、每月)。如果遇到触发器不生效的问题,请优先检查权限和触发器配置!用于在指定时间间隔后触发通知,支持单次或重复触发。接下来可以继续学习如何将通知添加到队列(

2025-04-05 23:37:26 564

原创 4.1 构建通知内容(UNMutableNotificationContent)

通过合理配置通知内容,可以有效提升用户体验和功能实用性。接下来可以继续学习如何设置触发器(是通知内容的核心类,用于定义通知的显示信息。

2025-04-05 23:26:35 760

原创 3.4 权限类型详解(声音、横幅、角标等)

case .authorized: permissionStatus = "已授权""已授权" : "已拒绝"case .denied: permissionStatus = "已拒绝"Text("权限状态: \(permissionStatus)")通过灵活组合权限类型,开发者可以精确控制通知的交互方式,同时保障用户体验与功能需求的平衡。Button("请求紧急通知权限") {Button("请求完整权限") {在用户拒绝权限时,提供友好的引导界面,解释通知的重要性。print("声音权限已开启")

2025-04-05 23:17:30 555

原创 3.3 处理用户授权结果(允许/拒绝)

"权限已允许" : "权限未允许").alert("通知权限被拒绝", isPresented: $showPermissionAlert) {print("权限请求失败: \(error.localizedDescription)")Button("去设置") { openSettings() }Button("取消", role: .cancel) { }print("权限已允许")Button("请求通知权限") {print("已有权限")print("用户明确拒绝通知权限")

2025-04-05 23:05:19 725

原创 3.2 使用 UNUserNotificationCenter 请求权限

以下是具体实现步骤。print("请求权限失败: \(error.localizedDescription)")Text("通知权限状态: \(permissionStatus)")permissionStatus = "未知状态"permissionStatus = "已授权"permissionStatus = "已拒绝"permissionStatus = "已授权"permissionStatus = "已拒绝"print("临时授权(静默推送,不打扰用户)")Button("请求通知权限") {

2025-04-05 23:00:08 550

原创 3.1 在 AppDelegate 或 SwiftUI Lifecycle 中配置权限请求

print("权限请求失败:\(error.localizedDescription)")print("权限请求失败:\(error.localizedDescription)")case .notDetermined: print("未决定")case .authorized: print("已授权")print("通知权限已授权")print("通知权限已授权")Button("请求通知权限") {case .denied: print("已拒绝"):根据用户上下文动态请求权限,提升用户体验。

2025-04-05 22:51:51 650

原创 1.3 SwiftUI本地推送与远程推送的区别

数据由服务器动态生成,通过 APNs(Apple Push Notification Service)转发到设备。混合使用:某些场景可结合两者(如通过远程推送唤醒应用,再触发本地推送更新数据)。数据完全存储在设备本地,通过代码直接定义内容(标题、声音、触发时间等)。常用于实时性强的场景(如即时通讯消息、新闻推送、社交互动提醒)。常用于基于时间或用户行为的提醒(如闹钟、任务提醒、定时通知)。多设备同步(如在 iPad 上操作后,同步到 iPhone)。基于用户行为的反馈(如任务完成后的通知)。

2025-04-05 15:37:01 316

原创 Nginx保姆教程第三篇:Nginx配置详解下

指令是 Nginx 配置中最重要的组成部分,理解其匹配规则和优先级对于配置高效、灵活的 Web 服务器至关重要。通过合理地使用不同的修饰符和 URI,可以实现各种复杂的请求路由和处理逻辑。它用于根据客户端请求的 URI(统一资源标识符)来匹配不同的配置块,从而实现不同的处理方式。如果没有修饰符,则进行普通匹配,也称为最佳前缀匹配。当一个请求到达 Nginx 时,Nginx 会按照以下顺序查找匹配的。块中,但这种情况比较少见,通常不推荐使用,因为它会使配置变得复杂。匹配以指定 URI 开头的 URI。

2025-04-05 15:34:40 272

原创 Nginx保姆教程第四篇:Nginx使用Cerbot配置SSL证书

Certbot 是一个免费、开源的软件工具,主要用于自动化地从 Let's Encrypt 获取和续订 SSL/TLS 证书,从而为网站启用 HTTPS 加密。简单来说,它能帮助你轻松地为网站添加一把“安全锁”,让网站通过 https:// 访问,保护用户数据传输的安全。Let's Encrypt 是一个免费、自动化的证书颁发机构(CA),由互联网安全研究小组(ISRG)运营。Certbot 通常会自动完成 Nginx 的配置,但如果你需要手动配置,可以在 Nginx 配置文件(通常是。

2025-01-03 14:14:01 688

原创 Nginx保姆教程第二篇:Nginx配置详解上

通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。块是 Nginx 配置中最关键的部分,它决定了如何处理不同的 URL 请求。用于配置 HTTP 服务器的相关参数。Nginx 的主配置文件是。

2025-01-02 23:44:51 1069

原创 MySQL 8.0 保姆级教程——第二篇:创建数据库

上一篇我们详细讲解了如何安装mysql8.0。这一篇我们将详细讲解 MySQL 8.0 数据库的创建过程,包括使用命令行和图形界面两种方式,以及一些最佳实践。在开始创建数据库之前,你需要确保已经安装了 MySQL 8.0 服务器。如果没有安装,请先下载并安装。安装完成后,你需要使用管理员账户(通常是 root 用户)登录到 MySQL 服务器。其中-u root表示使用 root 用户登录,-p表示提示输入密码。输入 root 用户的密码后,按回车键即可登录。例如,要创建一个名为mydatabase。

2024-12-31 15:28:15 1336

原创 MySQL 8.0 保姆级教程——第四篇:创建用户并赋予权限

本篇我们将详细讲解 MySQL 8.0 中创建用户并赋予权限的操作。1、mysql_native_password认证方式.2,、ysql_native_password认证方式。caching_sha2_password 是在 MySQL 8.0 中创建用户和管理权限的最佳实践。它提供了更高的安全性,并且是默认的认证插件。

2024-12-30 20:53:16 1524

原创 MySQL 8.0 保姆级教程——第三篇:MySQL 8.0 安全设置

通过实施强密码策略,可以降低因弱密码或易被猜测的密码而导致的安全风险。MySQL 8.0 引入了更强大的密码验证机制,允许管理员配置更精细的密码规则。通过合理地管理用户和分配权限,可以有效地控制对数据库的访问,防止未经授权的操作。插件和使用密码过期策略,可以有效地提高 MySQL 数据库的安全性。通过本节的学习,你应该掌握了 MySQL 的用户和权限管理的基本操作。MySQL 安装完成后,进行一些初始安全设置至关重要,以防止未经授权的访问和潜在的安全风险。是一个交互式脚本,用于执行一系列重要的安全设置。

2024-12-29 19:34:01 1128

原创 MySQL 8.0 保姆级教程——第一篇:安装

本篇将详细介绍如何在不同操作系统上安装 MySQL 8.0。MySQL 提供了多种安装方式,用户可以根据自己的需求和操作系统选择合适的安装方法。下面我们将分别详细介绍这几种安装方式。MySQL Installer 是一个 Windows 平台上易于使用的安装工具。它提供了一个图形化界面,引导用户完成 MySQL 的安装和配置。

2024-12-29 12:08:01 809

原创 解决keil no target connected

第二步,点击Debug,然后再点击Settings。第三步,修改Port。

2024-03-14 17:33:45 1143 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除