Alle Open-Source-Pakete
PlattformSwift

iOS-Notification-Framework

Planen Sie lokale Benachrichtigungen über iOS' Limit von 64 hinaus, leiten Sie Taps weiter und senden Sie Pushes über APNs.

3SterneNeueste Version: v2.0.0 · Aktualisiert: 15. Oktober 2026
Plattformen:iOS 17macOS 14watchOS 10visionOS 1

Lizenz: MIT

NotificationKit ist ein Swift-Package für Apps, die Benachrichtigungen auf dem Gerät planen, und für die Server, die an sie pushen. Es umschließt UserNotifications mit Value Types und behebt die Stellen, die lautlos scheitern: iOS behält nur die 64 am nächsten liegenden ausstehenden Benachrichtigungen einer App und verwirft den Rest ohne Fehler, manche ungültigen Werte lassen die App abstürzen statt einen Fehler zu werfen, und die Delegate-Callbacks sind aus Swift Concurrency nur schwer nutzbar. Eine zweite Library, NotificationKitAPNs, sendet Pushes über APNs mit demselben Payload-Typ, den die App liest. Keine der beiden Libraries hat Abhängigkeiten außerhalb von Apples SDK.

Funktionen

  • Keine verlorenen Benachrichtigungen über 64 hinaus: NotificationScheduler übergibt iOS die 64 nächsten, hält die übrigen in einer gespeicherten Warteschlange und rückt sie nach, sobald Plätze frei werden
  • Ruhezeiten und eine Häufigkeitsgrenze werden gegen den Auslösezeitpunkt einer Benachrichtigung geprüft, sodass eine um 21:00 Uhr für 23:00 Uhr gesetzte Erinnerung auf den Morgen wartet
  • Fehler statt Abstürze: ein wiederholendes Intervall unter 60 Sekunden, ein NaN-Relevance-Score oder Stunde 25 wirft einen NotificationValidationError, bevor UNUserNotificationCenter ihn sieht
  • Taps, Actions und Deep Links als Werte: NotificationEventHandler verwandelt Delegate-Callbacks in AsyncStreams, und DeepLinkRouter öffnet Screens nur aus erlaubten Schemes und Hosts
  • Push auf beiden Seiten: ein typisiertes PushPayload mit den Größenlimits von APNs, ein DeviceToken, das nie vollständig ausgegeben wird, eine Medien herunterladende Notification Service Extension und ein APNs-Client mit Token-Authentifizierung
  • InMemoryNotificationCenter bildet das 64-Benachrichtigungen-Limit des Systems nach, sodass die Scheduling-Logik in einfachen Unit-Tests läuft

Schnellstart

swift
1import NotificationKit
2import SwiftUI
3 
4let scheduler = NotificationScheduler() // one for the whole app
5 
6struct ContentView: View {
7 var body: some View {
8 Button("Remind me in 10 seconds") {
9 Task {
10 do {
11 try await scheduler.requestAuthorization()
12 try await scheduler.schedule(LocalNotification(
13 id: "water",
14 title: "Time for a glass of water",
15 body: "You asked for this reminder 10 seconds ago.",
16 trigger: .after(seconds: 10)
17 ))
18 } catch {
19 print("Could not schedule the reminder:", error)
20 }
21 }
22 }
23 }
24}

Installation

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/iOS-Notification-Framework.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourApp", dependencies: [
6 .product(name: "NotificationKit", package: "iOS-Notification-Framework")
7 ]),
8 // A server or command-line tool that sends pushes:
9 .executableTarget(name: "PushServer", dependencies: [
10 .product(name: "NotificationKitAPNs", package: "iOS-Notification-Framework")
11 ])
12]

Xcode

text
1https://github.com/muhittincamdali/iOS-Notification-Framework.git

Screenshots

Erinnerungsbanner der Beispiel-App NotificationLab auf einem iPhone-Simulator, helles Design
Erinnerungsbanner der Beispiel-App NotificationLab auf einem iPhone-Simulator, dunkles Design
Geplante Liste mit 64 Benachrichtigungen im System und dem Rest in der Warteschlange, helles Design
Geplante Liste mit 64 Benachrichtigungen im System und dem Rest in der Warteschlange, dunkles Design
Bestell-Screen, geöffnet über einen Simulator-Push, helles Design
Bestell-Screen, geöffnet über einen Simulator-Push, dunkles Design

Zeitleiste

  1. Repository als Prototyp eines Notification-Frameworks eröffnet; die meisten frühen Commits waren Dokumentation, Beispiele und CI

  2. v1.0.0 veröffentlicht; main wurde mit einem einzigen Commit und einer Builder-basierten API neu gestartet

  3. Kleine Ergänzungen am Prototyp: eine SwiftUI-Preview, ein Live-Activity-Manager und ein vorausschauender Push-Typ

  4. Als 2.0.0 um ein testbares Notification Center herum neu aufgebaut; die Prototyp-Quellen wurden entfernt, keine 1.x-API erhalten

Links

Verwandter Artikel

Artikel lesen (English)