Bladeren bron

Merge pull request #4 from joenoon/jn-contactsFramework

add ios9 Contacts framework check
Yonah Forst 9 jaren geleden
bovenliggende
commit
ea256db292
2 gewijzigde bestanden met toevoegingen van 41 en 14 verwijderingen
  1. 39 13
      ReactNativePermissions.m
  2. 2 1
      ReactNativePermissions.podspec

+ 39 - 13
ReactNativePermissions.m

@@ -6,6 +6,8 @@
 //  Copyright © 2016 Yonah Forst. All rights reserved.
 //
 
+@import Contacts;
+
 #import "ReactNativePermissions.h"
 
 #import "RCTBridge.h"
@@ -26,6 +28,11 @@
 
 @implementation ReactNativePermissions
 
++ (BOOL)useContactsFramework
+{
+    return [[CNContactStore alloc] init] != nil;
+}
+
 RCT_EXPORT_MODULE();
 @synthesize bridge = _bridge;
 
@@ -136,19 +143,38 @@ RCT_REMAP_METHOD(photoPermissionStatus, photoPermission:(RCTPromiseResolveBlock)
 
 RCT_REMAP_METHOD(contactsPermissionStatus, contactsPermission:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
 {
-    int status = ABAddressBookGetAuthorizationStatus();
-    switch (status) {
-        case kABAuthorizationStatusAuthorized:
-            return resolve(@(RNPermissionsStatusAuthorized));
-            
-        case kABAuthorizationStatusDenied:
-            return resolve(@(RNPermissionsStatusDenied));
-            
-        case kABAuthorizationStatusRestricted:
-            return resolve(@(RNPermissionsStatusRestricted));
-            
-        default:
-            return resolve(@(RNPermissionsStatusUndetermined));
+    if ([ReactNativePermissions useContactsFramework])
+    {
+        int status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
+        switch (status) {
+            case CNAuthorizationStatusAuthorized:
+                return resolve(@(RNPermissionsStatusAuthorized));
+                
+            case CNAuthorizationStatusDenied:
+                return resolve(@(RNPermissionsStatusDenied));
+                
+            case CNAuthorizationStatusRestricted:
+                return resolve(@(RNPermissionsStatusRestricted));
+                
+            default:
+                return resolve(@(RNPermissionsStatusUndetermined));
+        }
+    }
+    else {
+        int status = ABAddressBookGetAuthorizationStatus();
+        switch (status) {
+            case kABAuthorizationStatusAuthorized:
+                return resolve(@(RNPermissionsStatusAuthorized));
+                
+            case kABAuthorizationStatusDenied:
+                return resolve(@(RNPermissionsStatusDenied));
+                
+            case kABAuthorizationStatusRestricted:
+                return resolve(@(RNPermissionsStatusRestricted));
+                
+            default:
+                return resolve(@(RNPermissionsStatusUndetermined));
+        }
     }
 }
 

+ 2 - 1
ReactNativePermissions.podspec

@@ -12,7 +12,8 @@ Pod::Spec.new do |s|
   s.author              = package['author']
   s.source              = { :git => 'https://github.com/yonahforst/react-native-permissions.git', :tag => s.version }
 
-  s.platform            = :ios, '8.0'
+  s.platform              = :ios, '9.0'
+  s.ios.deployment_target = '8.0'
 
   s.dependency 'React'