Forráskód Böngészése

wip: add proper fire date

PC Dreams (Paulo Cristo) 9 éve
szülő
commit
74093e2d83
1 módosított fájl, 20 hozzáadás és 7 törlés
  1. 20 7
      src/ios/APPLocalNotification.m

+ 20 - 7
src/ios/APPLocalNotification.m

@@ -700,13 +700,26 @@
                                                          arguments:nil];
         content.sound = [UNNotificationSound defaultSound];
     
-        /// 4. update application icon badge numberß
-        //content.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);
-        // Deliver the notification in five seconds.
-        UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger
-                                                  triggerWithTimeInterval:1.f repeats:NO];
-        UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"FiveSecond"
-                                                                          content:content trigger:trigger];
+        NSDate *fireDate = notification.fireDate;
+        
+        NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
+        
+        // Extract all date components into dateComponents
+        NSDateComponents *dateComponents = [gregorianCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit
+                                                             fromDate:fireDate];
+        /// 4. update application icon badge number
+        content.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);
+        
+        // Deliver the notification at the fire date.
+        UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:dateComponents repeats:NO];
+        
+        NSString *identifier = @"DefaultNotificationIdentifier";
+        if(notification.userInfo!=nil && [notification.userInfo objectForKey:@"id"]!=nil) {
+            identifier = [notification.userInfo objectForKey:@"id"];
+        }
+        
+        UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];
+        
         /// 3. schedule localNotification
         UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
         [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {