Sfoglia il codice sorgente

fix fireEvent for IOS 10

PC Dreams (Paulo Cristo) 9 anni fa
parent
commit
694d63453b
1 ha cambiato i file con 42 aggiunte e 16 eliminazioni
  1. 42 16
      src/ios/APPLocalNotification.m

+ 42 - 16
src/ios/APPLocalNotification.m

@@ -26,6 +26,8 @@
 #import "UIApplication+APPLocalNotification.h"
 #import "UILocalNotification+APPLocalNotification.h"
 
+ @import UserNotifications;
+
 @interface APPLocalNotification ()
 
 // Retrieves the application state
@@ -691,26 +693,50 @@
  */
 - (void) fireEvent:(NSString*)event notification:(UILocalNotification*)notification
 {
-    NSString* js;
-    NSString* params = [NSString stringWithFormat:
-                        @"\"%@\"", self.applicationState];
+    if (IsAtLeastiOSVersion(@"10.0")) {
+        UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
+        content.title = [NSString localizedUserNotificationStringForKey:notification.alertTitle arguments:nil];
+        content.body = [NSString localizedUserNotificationStringForKey:notification.alertBody
+                                                         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];
+        /// 3. schedule localNotification
+        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
+        [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
+            if (!error) {
+                NSLog(@"add NotificationRequest succeeded!");
+            }
+        }];
+    } else {
 
-    if (notification) {
-        NSString* args = [notification encodeToJSON];
+        NSString* js;
+        NSString* params = [NSString stringWithFormat:
+                            @"\"%@\"", self.applicationState];
 
-        params = [NSString stringWithFormat:
-                  @"%@,'%@'",
-                  args, self.applicationState];
-    }
+        if (notification) {
+            NSString* args = [notification encodeToJSON];
 
-    js = [NSString stringWithFormat:
-          @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
-          event, params];
+            params = [NSString stringWithFormat:
+                      @"%@,'%@'",
+                      args, self.applicationState];
+        }
 
-    if (deviceready) {
-        [self.commandDelegate evalJs:js];
-    } else {
-        [self.eventQueue addObject:js];
+        js = [NSString stringWithFormat:
+              @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
+              event, params];
+
+        if (deviceready) {
+            [self.commandDelegate evalJs:js];
+        } else {
+            [self.eventQueue addObject:js];
+        }
     }
 }