Browse Source

Merge pull request #4 from joenoon/jn-contactsFramework

add ios9 Contacts framework check
Yonah Forst 8 years ago
parent
commit
ea256db292
2 changed files with 41 additions and 14 deletions
  1. 39
    13
      ReactNativePermissions.m
  2. 2
    1
      ReactNativePermissions.podspec

+ 39
- 13
ReactNativePermissions.m View File

@@ -6,6 +6,8 @@
6 6
 //  Copyright © 2016 Yonah Forst. All rights reserved.
7 7
 //
8 8
 
9
+@import Contacts;
10
+
9 11
 #import "ReactNativePermissions.h"
10 12
 
11 13
 #import "RCTBridge.h"
@@ -26,6 +28,11 @@
26 28
 
27 29
 @implementation ReactNativePermissions
28 30
 
31
++ (BOOL)useContactsFramework
32
+{
33
+    return [[CNContactStore alloc] init] != nil;
34
+}
35
+
29 36
 RCT_EXPORT_MODULE();
30 37
 @synthesize bridge = _bridge;
31 38
 
@@ -136,19 +143,38 @@ RCT_REMAP_METHOD(photoPermissionStatus, photoPermission:(RCTPromiseResolveBlock)
136 143
 
137 144
 RCT_REMAP_METHOD(contactsPermissionStatus, contactsPermission:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
138 145
 {
139
-    int status = ABAddressBookGetAuthorizationStatus();
140
-    switch (status) {
141
-        case kABAuthorizationStatusAuthorized:
142
-            return resolve(@(RNPermissionsStatusAuthorized));
143
-            
144
-        case kABAuthorizationStatusDenied:
145
-            return resolve(@(RNPermissionsStatusDenied));
146
-            
147
-        case kABAuthorizationStatusRestricted:
148
-            return resolve(@(RNPermissionsStatusRestricted));
149
-            
150
-        default:
151
-            return resolve(@(RNPermissionsStatusUndetermined));
146
+    if ([ReactNativePermissions useContactsFramework])
147
+    {
148
+        int status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
149
+        switch (status) {
150
+            case CNAuthorizationStatusAuthorized:
151
+                return resolve(@(RNPermissionsStatusAuthorized));
152
+                
153
+            case CNAuthorizationStatusDenied:
154
+                return resolve(@(RNPermissionsStatusDenied));
155
+                
156
+            case CNAuthorizationStatusRestricted:
157
+                return resolve(@(RNPermissionsStatusRestricted));
158
+                
159
+            default:
160
+                return resolve(@(RNPermissionsStatusUndetermined));
161
+        }
162
+    }
163
+    else {
164
+        int status = ABAddressBookGetAuthorizationStatus();
165
+        switch (status) {
166
+            case kABAuthorizationStatusAuthorized:
167
+                return resolve(@(RNPermissionsStatusAuthorized));
168
+                
169
+            case kABAuthorizationStatusDenied:
170
+                return resolve(@(RNPermissionsStatusDenied));
171
+                
172
+            case kABAuthorizationStatusRestricted:
173
+                return resolve(@(RNPermissionsStatusRestricted));
174
+                
175
+            default:
176
+                return resolve(@(RNPermissionsStatusUndetermined));
177
+        }
152 178
     }
153 179
 }
154 180
 

+ 2
- 1
ReactNativePermissions.podspec View File

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