@@ -2,6 +2,7 @@ import kotlinx.cinterop.ExperimentalForeignApi
2
2
import platform.CoreGraphics.CGRectMake
3
3
import platform.Foundation.NSLog
4
4
import platform.Foundation.NSTimer
5
+ import platform.Foundation.NSUUID
5
6
import platform.UIKit.NSTextAlignmentCenter
6
7
import platform.UIKit.UIAlertAction
7
8
import platform.UIKit.UIAlertActionStyleCancel
@@ -18,6 +19,13 @@ import platform.UIKit.UILabel
18
19
import platform.UIKit.UIView
19
20
import platform.UIKit.UIViewAnimationOptionCurveEaseInOut
20
21
import platform.UIKit.UIViewContentMode
22
+ import platform.UserNotifications.UNAuthorizationOptionAlert
23
+ import platform.UserNotifications.UNAuthorizationOptionSound
24
+ import platform.UserNotifications.UNMutableNotificationContent
25
+ import platform.UserNotifications.UNNotificationRequest
26
+ import platform.UserNotifications.UNNotificationSound
27
+ import platform.UserNotifications.UNTimeIntervalNotificationTrigger
28
+ import platform.UserNotifications.UNUserNotificationCenter
21
29
import platform.darwin.dispatch_async
22
30
import platform.darwin.dispatch_get_main_queue
23
31
@@ -52,6 +60,47 @@ actual fun Notify(message: String, duration: NotificationDuration) {
52
60
53
61
@OptIn(ExperimentalForeignApi ::class )
54
62
actual fun createNotification (type : NotificationType ): Notification = when (type) {
63
+ NotificationType .TOP -> object : Notification (){
64
+ override fun show (message : String , title : String? , duration : NotificationDuration ) {
65
+ UNUserNotificationCenter .currentNotificationCenter().requestAuthorizationWithOptions(
66
+ options = UNAuthorizationOptionAlert or UNAuthorizationOptionSound
67
+ ) { granted, error ->
68
+ if (granted) {
69
+ println (" Permission granted" )
70
+
71
+ val content = UNMutableNotificationContent ().apply {
72
+ this .setTitle(title ? : " Notification" )
73
+ this .setBody(message)
74
+ this .setSound(UNNotificationSound .defaultSound)
75
+ }
76
+
77
+ val trigger = UNTimeIntervalNotificationTrigger .triggerWithTimeInterval(
78
+ timeInterval = 5.0 ,
79
+ repeats = false
80
+ )
81
+
82
+ val request = UNNotificationRequest .requestWithIdentifier(
83
+ identifier = NSUUID ().UUIDString ,
84
+ content = content,
85
+ trigger = trigger
86
+ )
87
+
88
+
89
+ UNUserNotificationCenter .currentNotificationCenter().addNotificationRequest(
90
+ request
91
+ ) { error ->
92
+ error?.let {
93
+ println (" Error scheduling notification: ${it.localizedDescription} " )
94
+ } ? : println (" Notification scheduled" )
95
+ }
96
+ } else {
97
+ error?.let {
98
+ println (" Permission error: ${it.localizedDescription} " )
99
+ } ? : println (" Permission denied" )
100
+ }
101
+ }
102
+ }
103
+ }
55
104
NotificationType .ALERT -> object : Notification () {
56
105
override fun show (message : String , title : String? , duration : NotificationDuration ) {
57
106
val viewController = UIApplication .sharedApplication.keyWindow?.rootViewController
0 commit comments