Adjust Push Notification Logic
Nucleic-Session: 0F065CD6-20FE-4941-ACF5-C57A4572A5A3 Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
@@ -108,21 +108,15 @@ final class NotificationRouter: NSObject {
|
|||||||
center.removePendingNotificationRequests(withIdentifiers: [identifier])
|
center.removePendingNotificationRequests(withIdentifiers: [identifier])
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Recall the shared "waiting for your approval" attention notification once nothing is pending
|
/// Recall the generic remote wake tickle ("A session is waiting for your approval") once no
|
||||||
/// anywhere. This is the remote wake tickle (delivered under `approvalTickleIdentifier`) that a
|
/// approval is pending anywhere. This targets *only* the shared tickle (delivered under
|
||||||
/// prior push left on the lock screen — the counterpart to the per-approval `withdrawApproval`.
|
/// `approvalTickleIdentifier`, its APNs collapse-id) — the content-free push a phone gets while
|
||||||
/// Arrives two ways: the relay's silent `clear` push (phone was away), or the store's own
|
/// away. Per-approval notifications are each recalled by `withdrawApproval(_:)` as they resolve,
|
||||||
/// reconcile when a live socket sees the last approval resolve. Also sweeps any per-approval
|
/// so a still-pending approval's own banner is never swept away by this.
|
||||||
/// locals a live socket posted but hasn't individually withdrawn, so the lock screen ends clean.
|
|
||||||
func withdrawApprovalAttention() {
|
func withdrawApprovalAttention() {
|
||||||
let center = UNUserNotificationCenter.current()
|
let center = UNUserNotificationCenter.current()
|
||||||
center.removeDeliveredNotifications(withIdentifiers: [Self.approvalTickleIdentifier])
|
center.removeDeliveredNotifications(withIdentifiers: [Self.approvalTickleIdentifier])
|
||||||
center.removePendingNotificationRequests(withIdentifiers: [Self.approvalTickleIdentifier])
|
center.removePendingNotificationRequests(withIdentifiers: [Self.approvalTickleIdentifier])
|
||||||
center.getDeliveredNotifications { delivered in
|
|
||||||
let stale = delivered.map(\.request.identifier).filter { $0.hasPrefix("approval-") }
|
|
||||||
guard !stale.isEmpty else { return }
|
|
||||||
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: stale)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Keep the app-icon badge equal to the NEEDS YOU count (UX_IOS §8).
|
/// Keep the app-icon badge equal to the NEEDS YOU count (UX_IOS §8).
|
||||||
|
|||||||
Reference in New Issue
Block a user