SuperAPI AI 工具集

push-notifications

编程与开发

查看项目

更新于 10-16 09:12

技能介绍

用途

该技能用于在 iOS/macOS 应用中实现、审查或调试推送通知,包括本地通知、远程(APNs)通知、富通知、通知操作等。基于 UserNotifications 框架与 APNs,目标为 iOS 26+ 与 Swift 6.3,除特别说明外向后兼容至 iOS 16。

主要能力

权限流程

在一切操作之前先请求通知授权。系统弹窗只出现一次,后续调用返回已存储的决定。提供请求授权、检查当前状态(.notDetermined、.denied、.authorized、.provisional、.ephemeral)的代码示例。临时通知(provisional)可静默投递到通知中心而不打断用户,适用于引导流程。关键警报(critical alerts)可绕过勿扰模式与静音开关,需 Apple 特殊授权(通过开发者门户申请),仅用于健康、安全或安保场景。用户拒绝权限时,应通过 UIApplication.openSettingsURLString 引导至设置,不要反复提示。

APNs 注册

在 SwiftUI 应用中使用 UIApplicationDelegateAdaptor 接收设备令牌,AppDelegate 回调是接收 APNs 令牌的唯一方式。提供 didRegisterForRemoteNotificationsWithDeviceToken 与 didFailToRegisterForRemoteNotificationsWithError 的实现示例。注册顺序为先请求授权,再调用 registerForRemoteNotifications()。设备令牌会变化,每次回调都应重新发送到服务器,而非仅首次。

本地通知

无需服务器,直接在设备上调度通知,适用于提醒、计时器和基于位置的警报。涵盖内容创建(标题、副标题、正文、声音、角标、userInfo、threadIdentifier)、触发类型(时间间隔、日历日期、地理区域)、调度与管理(添加、移除待处理、移除已投递、列出待处理请求)。

远程通知负载

给出标准 APNs 负载结构(aps 中的 alert、badge、sound、thread-id、category,以及自定义字段)。静默/后台推送使用 content-available: 1 且不含 alert、sound、badge,需开启“后台模式 > 远程通知”能力,并在 AppDelegate 中处理。可变内容使用 mutable-content: 1,允许通知服务扩展在展示前修改内容,用于下载图片、解密内容或添加附件。本地化通知使用 title-loc-key、loc-key、loc-args 等键。

通知处理

实现 UNUserNotificationCenterDelegate 以控制前台展示与处理用户点击,代理应尽早设置(application(_:didFinishLaunchingWithOptions:) 或 App.init)。willPresent 决定前台通知展示哪些元素(不实现则前台通知被静默抑制);didReceive 处理用户点击,区分默认动作、关闭动作与自定义动作。深链跳转通过共享的 @Observable 路由器实现,代理写入待处理目标,SwiftUI 视图观察并消费。

通知操作与分类

定义显示为按钮的交互操作,在启动时注册分类。示例包含文本输入操作(回复)、普通操作(点赞)与破坏性操作(删除,带 .destructive 与 .authenticationRequired)。操作选项包括 .authenticationRequired(需解锁设备)、.destructive(红色显示)、.foreground(点击后启动应用到前台)。

通知分组

通过 threadIdentifier(或 APNs 负载中的 thread-id)将相关通知分组,每个唯一线程在通知中心成为独立分组。可使用 summaryArgument 与 summaryArgumentCount 生成摘要,并在分类中通过 categorySummaryFormat 自定义摘要格式字符串。

使用方式

技能以代码示例与清单形式组织,包含权限流程、APNs 注册、本地通知、远程负载、通知处理、操作与分类、分组、常见错误、审查清单与参考文档等章节。开发者可按章节查阅对应实现代码,并依据审查清单核对项目。

适用场景

iOS/macOS 应用中需要实现或调试本地通知、远程推送、富通知、交互式通知、通知分组、静默推送、深链跳转等功能的开发与审查场景。

限制

目标平台为 iOS 26+ 与 Swift 6.3,除特别说明外向后兼容至 iOS 16。关键警报需 Apple 特殊授权。静默推送需开启后台模式能力。模拟器上 APNs 注册总是失败,属开发期预期行为。APNs 为尽力而为投递,不应假设通知总能到达。敏感数据不应直接放入通知负载。