Explorar el Código

address #49. also removes support for iOS < 8.0

Yonah Forst hace 8 años
padre
commit
892d1f0cc7
Se han modificado 1 ficheros con 12 adiciones y 31 borrados
  1. 12 31
      permissions/RNPNotification.m

+ 12 - 31
permissions/RNPNotification.m

@@ -19,35 +19,21 @@ static NSString* RNPDidAskForNotification = @"RNPDidAskForNotification";
 + (NSString *)getStatus
 {
     BOOL didAskForPermission = [[NSUserDefaults standardUserDefaults] boolForKey:RNPDidAskForNotification];
+    BOOL isRegistered = [[UIApplication sharedApplication] isRegisteredForRemoteNotifications];
+    BOOL isEnabled = [[[UIApplication sharedApplication] currentUserNotificationSettings] types] != UIUserNotificationTypeNone;
     
-    if (didAskForPermission) {
-        if ([[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {
-            // iOS8+
-            BOOL isRegistered = [[UIApplication sharedApplication] isRegisteredForRemoteNotifications];
-            BOOL isEnabled = [[[UIApplication sharedApplication] currentUserNotificationSettings] types] != UIUserNotificationTypeNone;
-            if (isRegistered || isEnabled) {
-                return isEnabled ? RNPStatusAuthorized : RNPStatusDenied;
-            }
-            else {
-                return RNPStatusDenied;
-            }
-        } else {
-            if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {
-                return RNPStatusDenied;
-            }
-            else {
-                return RNPStatusAuthorized;
-            }
-        }
+    if (isRegistered || isEnabled) {
+        return isEnabled ? RNPStatusAuthorized : RNPStatusDenied;
     } else {
-        return RNPStatusUndetermined;
+        return didAskForPermission ? RNPStatusDenied : RNPStatusUndetermined;
     }
 }
 
 - (void)request:(UIUserNotificationType)types completionHandler:(void (^)(NSString*))completionHandler
 {
-    BOOL didAskForPermission = [[NSUserDefaults standardUserDefaults] boolForKey:RNPDidAskForNotification];
-    if (!didAskForPermission) {
+    NSString *status = [self.class getStatus];
+    
+    if (status == RNPStatusUndetermined) {
         self.completionHandler = completionHandler;
         
         [[NSNotificationCenter defaultCenter] addObserver:self
@@ -55,19 +41,14 @@ static NSString* RNPDidAskForNotification = @"RNPDidAskForNotification";
                                                      name:UIApplicationDidBecomeActiveNotification
                                                    object:nil];
         
-        if ([[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {
-            // iOS8+
-            UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
-            [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
-            [[UIApplication sharedApplication] registerForRemoteNotifications];
-        } else {
-            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationType)types];
-        }
+        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
+        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
+        [[UIApplication sharedApplication] registerForRemoteNotifications];
         
         [[NSUserDefaults standardUserDefaults] setBool:YES forKey:RNPDidAskForNotification];
         [[NSUserDefaults standardUserDefaults] synchronize];
     } else {
-        completionHandler([self.class getStatus]);
+        completionHandler(status);
     }
 }