SystemNotification is a SwiftUI SDK that lets you mimic the native iOS system notification that are presented when you toggle silent mode, connect your AirPods, etc.
The result can look like this, or completely different:
System notifications can be styled and customized. You can use a native-looking SystemNotificationMessage
view as the content view, or any custom view.
SystemNotification can be installed with the Swift Package Manager:
https://github.com/danielsaidi/SystemNotification.git
With SystemNotification, you can add a system notification to any view just as you add a sheet
, alert
and fullScreenModal
, by applying a systemNotification
view modifier (preferably to the application root view).
State-based notifications take a boolean state binding and a view builder:
import SystemNotification
struct MyView: View {
@State
var isActive = false
var body: some View {
VStack {
Button("Show notification") {
isActive = true
}
}
.systemNotification(isActive: $isActive) {
Text("You can use any custom content view")
.padding()
}
}
}
Context-based notifications just take a SystemNotificationContext
instance and can then show many different notifications with a single modifier:
import SystemNotification
struct MyView: View {
@StateObject
var notification = SystemNotificationContext()
var body: some View {
VStack {
Button("Show text") {
notification.present {
Text("Context-based notifications are more flexible.")
.padding()
.multilineTextAlignment(.center)
}
}
Button("Show message") {
notification.present {
SystemNotificationMessage(
icon: Text("👍"),
title: "Great job!",
text: "You presented a native-looking message!"
)
}
}
}
.systemNotification(notification)
}
}
The SystemNotificationMessage
view lets you easily mimic a native notification view, with an icon, title and text, but you can use any custom view as the notification body.
For more information about how to configure and style your notifications, predefined message types and styles, and how to create your own custom message types, please see the getting started guide.
The online documentation has more information, articles, code examples, etc.
The demo app lets you explore the library. To try it out, just open and run the Demo
project.
You can sponsor me on GitHub Sponsors or reach out for paid support, to help support my open-source projects.
Your support makes it possible for me to put more work into these projects and make them the best they can be.
Feel free to reach out if you have questions or if you want to contribute in any way:
- Website: danielsaidi.com
- Mastodon: @danielsaidi@mastodon.social
- Twitter: @danielsaidi
- E-mail: daniel.saidi@gmail.com
SystemNotification is available under the MIT license. See the LICENSE file for more info.