diff --git a/Android/app/build.gradle.kts b/Android/app/build.gradle.kts
index 725241c..92c43a0 100644
--- a/Android/app/build.gradle.kts
+++ b/Android/app/build.gradle.kts
@@ -5,6 +5,10 @@ plugins {
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.android.application)
id("skip-build-plugin")
+
+ // this plugin is needed in order to process the google-services.json file
+ id("com.google.gms.google-services") version "4.4.4" apply true
+ id("com.google.firebase.crashlytics") version "3.0.2" apply true
}
skip {
diff --git a/Android/app/google-services.json b/Android/app/google-services.json
new file mode 100644
index 0000000..07f5176
--- /dev/null
+++ b/Android/app/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "25594159619",
+ "project_id": "app-fair-425519",
+ "storage_bucket": "app-fair-425519.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:25594159619:android:965b6dc7c4ba7e6afc2436",
+ "android_client_info": {
+ "package_name": "org.appfair.app.ShowcaseLite"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDICqY23CwGFFBM2hDf_-4oJPtUFRfK_1g"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
diff --git a/Android/app/src/main/AndroidManifest.xml b/Android/app/src/main/AndroidManifest.xml
index 35beb0b..35198b1 100644
--- a/Android/app/src/main/AndroidManifest.xml
+++ b/Android/app/src/main/AndroidManifest.xml
@@ -22,6 +22,7 @@
+
-
+
+ aps-environment
+ development
+ com.apple.developer.aps-environment
+ development
+
diff --git a/Darwin/Showcase.xcodeproj/xcshareddata/xcschemes/Showcase.xcscheme b/Darwin/Showcase.xcodeproj/xcshareddata/xcschemes/Showcase.xcscheme
deleted file mode 100644
index e09b31a..0000000
--- a/Darwin/Showcase.xcodeproj/xcshareddata/xcschemes/Showcase.xcscheme
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Package.swift b/Package.swift
index 0522407..78206ba 100644
--- a/Package.swift
+++ b/Package.swift
@@ -19,6 +19,7 @@ let package = Package(
.package(url: "https://source.skip.tools/skip-motion.git", "0.0.0"..<"2.0.0"),
.package(url: "https://source.skip.tools/skip-keychain.git", "0.3.0"..<"2.0.0"),
.package(url: "https://source.skip.tools/skip-marketplace.git", "0.0.0"..<"2.0.0"),
+ .package(url: "https://source.skip.tools/skip-notify.git", "0.0.0"..<"2.0.0"),
],
targets: [
.target(name: "Showcase", dependencies: [
@@ -31,6 +32,7 @@ let package = Package(
.product(name: "SkipMotion", package: "skip-motion"),
.product(name: "SkipKeychain", package: "skip-keychain"),
.product(name: "SkipMarketplace", package: "skip-marketplace"),
+ .product(name: "SkipNotify", package: "skip-notify"),
], resources: [.process("Resources")], plugins: [.plugin(name: "skipstone", package: "skip")]),
]
)
diff --git a/Sources/Showcase/NotificationPlayground.swift b/Sources/Showcase/NotificationPlayground.swift
new file mode 100644
index 0000000..dc03e93
--- /dev/null
+++ b/Sources/Showcase/NotificationPlayground.swift
@@ -0,0 +1,9 @@
+// Copyright 2023–2025 Skip
+import SwiftUI
+import SkipNotify
+
+struct NotificationPlayground: View {
+ var body: some View {
+ Text("NotificationPlayground")
+ }
+}
diff --git a/Sources/Showcase/PlaygroundListView.swift b/Sources/Showcase/PlaygroundListView.swift
index 8a769cc..a612014 100644
--- a/Sources/Showcase/PlaygroundListView.swift
+++ b/Sources/Showcase/PlaygroundListView.swift
@@ -42,6 +42,7 @@ enum PlaygroundType: CaseIterable, View {
case menu
case modifier
case navigationStack
+ case notification
case observable
case offsetPosition
case onSubmit
@@ -163,6 +164,8 @@ enum PlaygroundType: CaseIterable, View {
return LocalizedStringResource("Modifiers")
case .navigationStack:
return LocalizedStringResource("NavigationStack")
+ case .notification:
+ return LocalizedStringResource("Notifications")
case .observable:
return LocalizedStringResource("Observable")
case .offsetPosition:
@@ -326,6 +329,8 @@ enum PlaygroundType: CaseIterable, View {
ModifierPlayground()
case .navigationStack:
NavigationStackPlayground()
+ case .notification:
+ NotificationPlayground()
case .observable:
ObservablePlayground()
case .offsetPosition:
diff --git a/Sources/Showcase/Resources/Localizable.xcstrings b/Sources/Showcase/Resources/Localizable.xcstrings
index fec6065..92d147b 100644
--- a/Sources/Showcase/Resources/Localizable.xcstrings
+++ b/Sources/Showcase/Resources/Localizable.xcstrings
@@ -1593,6 +1593,9 @@
},
"Item %lld" : {
+ },
+ "Item value: %lld" : {
+
},
"JavaScript" : {
@@ -1828,9 +1831,18 @@
},
"Navigate back" : {
+ },
+ "Navigate back (dismiss)" : {
+
+ },
+ "Navigate back (set nil)" : {
+
},
"Navigate forward" : {
+ },
+ "Navigate forward to %lld" : {
+
},
"NavigationLink" : {
@@ -1904,6 +1916,12 @@
},
"Note: tint should not affect Label appearance" : {
+ },
+ "NotificationPlayground" : {
+
+ },
+ "Notifications" : {
+
},
"Observable" : {
@@ -2134,6 +2152,9 @@
},
"Present with data" : {
+ },
+ "Present with item binding" : {
+
},
"Primary" : {
@@ -2374,6 +2395,9 @@
},
"Selection Set" : {
+ },
+ "Selection: %@" : {
+
},
"Selection: %lld" : {