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
 //  Copyright © 2016 Yonah Forst. All rights reserved.
6
 //  Copyright © 2016 Yonah Forst. All rights reserved.
7
 //
7
 //
8
 
8
 
9
+@import Contacts;
10
+
9
 #import "ReactNativePermissions.h"
11
 #import "ReactNativePermissions.h"
10
 
12
 
11
 #import "RCTBridge.h"
13
 #import "RCTBridge.h"
26
 
28
 
27
 @implementation ReactNativePermissions
29
 @implementation ReactNativePermissions
28
 
30
 
31
++ (BOOL)useContactsFramework
32
+{
33
+    return [[CNContactStore alloc] init] != nil;
34
+}
35
+
29
 RCT_EXPORT_MODULE();
36
 RCT_EXPORT_MODULE();
30
 @synthesize bridge = _bridge;
37
 @synthesize bridge = _bridge;
31
 
38
 
136
 
143
 
137
 RCT_REMAP_METHOD(contactsPermissionStatus, contactsPermission:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
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
   s.author              = package['author']
12
   s.author              = package['author']
13
   s.source              = { :git => 'https://github.com/yonahforst/react-native-permissions.git', :tag => s.version }
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
   s.dependency 'React'
18
   s.dependency 'React'
18
 
19