@cloudflare/realtimekit-react-native 0.0.0 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +83 -0
- package/RealtimeKitCore.podspec +19 -0
- package/android/build.gradle +58 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradlew +185 -0
- package/android/gradlew.bat +89 -0
- package/android/src/main/AndroidManifest.xml +23 -0
- package/android/src/main/java/com/reactnativecore/BackgroundTimer/RNBackgroundTimer.java +97 -0
- package/android/src/main/java/com/reactnativecore/Constants.java +14 -0
- package/android/src/main/java/com/reactnativecore/CoreModule.java +49 -0
- package/android/src/main/java/com/reactnativecore/CorePackage.java +34 -0
- package/android/src/main/java/com/reactnativecore/DyteHelperModule.java +268 -0
- package/android/src/main/java/com/reactnativecore/DyteHolder.java +7 -0
- package/android/src/main/java/com/reactnativecore/ForegroundService.java +48 -0
- package/android/src/main/java/com/reactnativecore/NotificationHelper.java +127 -0
- package/android/src/main/java/com/reactnativecore/RNPermissionsModule.java +226 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/AppRTCBluetoothManager.java +637 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/AppRTCProximitySensor.java +133 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/AppRTCUtils.java +41 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/InCallManagerModule.java +1881 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/InCallProximityManager.java +162 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/InCallWakeLockUtils.java +116 -0
- package/android/src/main/java/com/reactnativecore/incallmanager/ThreadUtils.java +39 -0
- package/app.plugin.js +1 -0
- package/ios/BroadcastEventEmitter.h +11 -0
- package/ios/BroadcastEventEmitter.m +72 -0
- package/ios/Core.h +5 -0
- package/ios/Core.m +28 -0
- package/ios/Core.xcodeproj/project.pbxproj +287 -0
- package/ios/DyteRNBackgroundTimer.h +22 -0
- package/ios/DyteRNBackgroundTimer.m +90 -0
- package/ios/DyteRNPermissionHandlerNotifications.h +17 -0
- package/ios/DyteRNPermissionHandlerNotifications.m +127 -0
- package/ios/DyteRNPermissions.h +50 -0
- package/ios/DyteRNPermissions.m +275 -0
- package/ios/DyteScreensharePickerView.h +8 -0
- package/ios/DyteScreensharePickerView.m +27 -0
- package/ios/PrivacyInfo.xcprivacy +60 -0
- package/ios/RNInCallManager.h +16 -0
- package/ios/RNInCallManager.m +1354 -0
- package/ios/permissions/DyteRNPermissionHandlerBluetoothPeripheral.h +4 -0
- package/ios/permissions/DyteRNPermissionHandlerBluetoothPeripheral.m +87 -0
- package/ios/permissions/DyteRNPermissionHandlerCamera.h +5 -0
- package/ios/permissions/DyteRNPermissionHandlerCamera.m +38 -0
- package/ios/permissions/DyteRNPermissionHandlerMicrophone.h +5 -0
- package/ios/permissions/DyteRNPermissionHandlerMicrophone.m +34 -0
- package/ios/permissions/DyteRNPermissionHandlerPhotoLibrary.h +8 -0
- package/ios/permissions/DyteRNPermissionHandlerPhotoLibrary.m +70 -0
- package/ios/screenshare/DyteDarwinNotificationCenter.swift +21 -0
- package/ios/screenshare/DyteScreenshareAtomic.swift +29 -0
- package/ios/screenshare/DyteScreenshareHandler.swift +103 -0
- package/ios/screenshare/DyteScreenshareUploader.swift +139 -0
- package/ios/screenshare/DyteSocketConnection.swift +190 -0
- package/lib/BackgroundHandler.d.ts +20 -0
- package/lib/BackgroundHandler.js +87 -0
- package/lib/LocalMediaError.d.ts +4 -0
- package/lib/LocalMediaError.js +6 -0
- package/lib/LocalMediaHandler.d.ts +118 -0
- package/lib/LocalMediaHandler.js +853 -0
- package/lib/LocalMediaInterfaces.d.ts +76 -0
- package/lib/LocalMediaInterfaces.js +1 -0
- package/lib/LocalMediaUtils.d.ts +93 -0
- package/lib/LocalMediaUtils.js +276 -0
- package/lib/NativeAudioManager.d.ts +16 -0
- package/lib/NativeAudioManager.js +93 -0
- package/lib/PermissionHandler.d.ts +34 -0
- package/lib/PermissionHandler.js +179 -0
- package/lib/ReactContext.d.ts +42 -0
- package/lib/ReactContext.js +96 -0
- package/lib/ReactHooks.d.ts +11 -0
- package/lib/ReactHooks.js +73 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +40 -0
- package/lib/utils/crypto.d.ts +17 -0
- package/lib/utils/crypto.js +82 -0
- package/package.json +51 -4
- package/plugin/build/withDyte.d.ts +25 -0
- package/plugin/build/withDyte.js +100 -0
- package/plugin/src/withDyte.ts +150 -0
- package/plugin/tsconfig.json +10 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
#import "DyteRNPermissions.h"
|
|
2
|
+
#import <React/RCTLog.h>
|
|
3
|
+
#import <React/RCTConvert.h>
|
|
4
|
+
#import "DyteRNPermissionHandlerBluetoothPeripheral.h"
|
|
5
|
+
#import "DyteRNPermissionHandlerCamera.h"
|
|
6
|
+
#import "DyteRNPermissionHandlerMicrophone.h"
|
|
7
|
+
#import "DyteRNPermissionHandlerPhotoLibrary.h"
|
|
8
|
+
#import "DyteRNPermissionHandlerNotifications.h"
|
|
9
|
+
|
|
10
|
+
static NSString* SETTING_KEY = @"@RNPermissions:Requested";
|
|
11
|
+
|
|
12
|
+
@implementation RCTConvert(RNPermission)
|
|
13
|
+
|
|
14
|
+
RCT_ENUM_CONVERTER(RNPermission, (@{
|
|
15
|
+
[DyteRNPermissionHandlerBluetoothPeripheral handlerUniqueId]: @(RNPermissionBluetoothPeripheral),
|
|
16
|
+
[DyteRNPermissionHandlerCamera handlerUniqueId]: @(RNPermissionCamera),
|
|
17
|
+
[DyteRNPermissionHandlerMicrophone handlerUniqueId]: @(RNPermissionMicrophone),
|
|
18
|
+
[DyteRNPermissionHandlerPhotoLibrary handlerUniqueId]: @(RNPermissionPhotoLibrary),
|
|
19
|
+
}), RNPermissionUnknown, integerValue);
|
|
20
|
+
|
|
21
|
+
@end
|
|
22
|
+
|
|
23
|
+
@interface DyteRNPermissions()
|
|
24
|
+
|
|
25
|
+
@property (nonatomic, strong) NSMutableDictionary<NSString *, id<DyteRNPermissionHandler>> *_Nonnull handlers;
|
|
26
|
+
|
|
27
|
+
@end
|
|
28
|
+
|
|
29
|
+
@implementation DyteRNPermissions
|
|
30
|
+
|
|
31
|
+
RCT_EXPORT_MODULE();
|
|
32
|
+
|
|
33
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
34
|
+
return YES;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
- (dispatch_queue_t)methodQueue {
|
|
38
|
+
return dispatch_get_main_queue();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
- (NSDictionary *)constantsToExport {
|
|
42
|
+
NSMutableArray<NSString *> *available = [NSMutableArray new];
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
[available addObject:[DyteRNPermissionHandlerBluetoothPeripheral handlerUniqueId]];
|
|
46
|
+
[available addObject:[DyteRNPermissionHandlerCamera handlerUniqueId]];
|
|
47
|
+
[available addObject:[DyteRNPermissionHandlerMicrophone handlerUniqueId]];
|
|
48
|
+
[available addObject:[DyteRNPermissionHandlerPhotoLibrary handlerUniqueId]];
|
|
49
|
+
|
|
50
|
+
#if RCT_DEV
|
|
51
|
+
if ([available count] == 0) {
|
|
52
|
+
NSMutableString *message = [NSMutableString new];
|
|
53
|
+
|
|
54
|
+
[message appendString:@"⚠ No permission handler detected.\n\n"];
|
|
55
|
+
[message appendString:@"• Check that you link at least one permission handler in your Podfile.\n"];
|
|
56
|
+
[message appendString:@"• Uninstall this app, delete your Xcode DerivedData folder and rebuild it.\n"];
|
|
57
|
+
[message appendString:@"• If you use `use_frameworks!`, follow the workaround guide in the project README."];
|
|
58
|
+
|
|
59
|
+
RCTLogError(@"%@", message);
|
|
60
|
+
}
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
return @{ @"available": available };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
- (void)checkUsageDescriptionKeys:(NSArray<NSString *> * _Nonnull)keys {
|
|
67
|
+
#if RCT_DEV
|
|
68
|
+
for (NSString *key in keys) {
|
|
69
|
+
if (![[NSBundle mainBundle] objectForInfoDictionaryKey:key]) {
|
|
70
|
+
RCTLogError(@"Cannot check or request permission without the required \"%@\" entry in your app \"Info.plist\" file", key);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
#endif
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
- (id<DyteRNPermissionHandler> _Nullable)handlerForPermission:(RNPermission)permission {
|
|
78
|
+
id<DyteRNPermissionHandler> handler = nil;
|
|
79
|
+
|
|
80
|
+
switch (permission) {
|
|
81
|
+
|
|
82
|
+
case RNPermissionBluetoothPeripheral:
|
|
83
|
+
handler = [DyteRNPermissionHandlerBluetoothPeripheral new];
|
|
84
|
+
break;
|
|
85
|
+
|
|
86
|
+
case RNPermissionCamera:
|
|
87
|
+
handler = [DyteRNPermissionHandlerCamera new];
|
|
88
|
+
break;
|
|
89
|
+
case RNPermissionMicrophone:
|
|
90
|
+
handler = [DyteRNPermissionHandlerMicrophone new];
|
|
91
|
+
break;
|
|
92
|
+
case RNPermissionPhotoLibrary:
|
|
93
|
+
handler = [DyteRNPermissionHandlerPhotoLibrary new];
|
|
94
|
+
break;
|
|
95
|
+
case RNPermissionUnknown:
|
|
96
|
+
break; // RCTConvert prevents this case
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
[self checkUsageDescriptionKeys:[[handler class] usageDescriptionKeys]];
|
|
100
|
+
return handler;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
- (NSString *)stringForStatus:(RNPermissionStatus)status {
|
|
104
|
+
switch (status) {
|
|
105
|
+
case RNPermissionStatusNotAvailable:
|
|
106
|
+
case RNPermissionStatusRestricted:
|
|
107
|
+
return @"unavailable";
|
|
108
|
+
case RNPermissionStatusNotDetermined:
|
|
109
|
+
return @"denied";
|
|
110
|
+
case RNPermissionStatusDenied:
|
|
111
|
+
return @"blocked";
|
|
112
|
+
case RNPermissionStatusLimited:
|
|
113
|
+
return @"limited";
|
|
114
|
+
case RNPermissionStatusAuthorized:
|
|
115
|
+
return @"granted";
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
- (NSString *)lockHandler:(id<DyteRNPermissionHandler>)handler {
|
|
120
|
+
if (_handlers == nil) {
|
|
121
|
+
_handlers = [NSMutableDictionary new];
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
NSString *lockId = [[NSUUID UUID] UUIDString];
|
|
125
|
+
[_handlers setObject:handler forKey:lockId];
|
|
126
|
+
|
|
127
|
+
return lockId;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
- (void)unlockHandler:(NSString * _Nonnull)lockId {
|
|
131
|
+
if (_handlers != nil) {
|
|
132
|
+
[self.handlers removeObjectForKey:lockId];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
+ (bool)isFlaggedAsRequested:(NSString * _Nonnull)handlerId {
|
|
137
|
+
NSArray<NSString *> *requested = [[NSUserDefaults standardUserDefaults] arrayForKey:SETTING_KEY];
|
|
138
|
+
return requested == nil ? false : [requested containsObject:handlerId];
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
+ (void)flagAsRequested:(NSString * _Nonnull)handlerId {
|
|
142
|
+
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
|
|
143
|
+
NSMutableArray *requested = [[userDefaults arrayForKey:SETTING_KEY] mutableCopy];
|
|
144
|
+
|
|
145
|
+
if (requested == nil) {
|
|
146
|
+
requested = [NSMutableArray new];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (![requested containsObject:handlerId]) {
|
|
150
|
+
[requested addObject:handlerId];
|
|
151
|
+
[userDefaults setObject:requested forKey:SETTING_KEY];
|
|
152
|
+
[userDefaults synchronize];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
RCT_REMAP_METHOD(openSettings,
|
|
157
|
+
openSettingsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
158
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
159
|
+
UIApplication *sharedApplication = [UIApplication sharedApplication];
|
|
160
|
+
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
|
161
|
+
|
|
162
|
+
[sharedApplication openURL:url options:@{} completionHandler:^(BOOL success) {
|
|
163
|
+
if (success) {
|
|
164
|
+
resolve(@(true));
|
|
165
|
+
} else {
|
|
166
|
+
reject(@"cannot_open_settings", @"Cannot open application settings", nil);
|
|
167
|
+
}
|
|
168
|
+
}];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
RCT_REMAP_METHOD(check,
|
|
172
|
+
checkWithPermission:(RNPermission)permission
|
|
173
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
174
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
175
|
+
id<DyteRNPermissionHandler> handler = [self handlerForPermission:permission];
|
|
176
|
+
NSString *lockId = [self lockHandler:handler];
|
|
177
|
+
|
|
178
|
+
[handler checkWithResolver:^(RNPermissionStatus status) {
|
|
179
|
+
resolve([self stringForStatus:status]);
|
|
180
|
+
[self unlockHandler:lockId];
|
|
181
|
+
} rejecter:^(NSError *error) {
|
|
182
|
+
reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
|
|
183
|
+
[self unlockHandler:lockId];
|
|
184
|
+
}];
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
RCT_REMAP_METHOD(request,
|
|
188
|
+
requestWithPermission:(RNPermission)permission
|
|
189
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
190
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
191
|
+
id<DyteRNPermissionHandler> handler = [self handlerForPermission:permission];
|
|
192
|
+
NSString *lockId = [self lockHandler:handler]; [handler requestWithResolver:^(RNPermissionStatus status) {
|
|
193
|
+
resolve([self stringForStatus:status]);
|
|
194
|
+
[self unlockHandler:lockId];
|
|
195
|
+
} rejecter:^(NSError *error) {
|
|
196
|
+
reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
|
|
197
|
+
[self unlockHandler:lockId];
|
|
198
|
+
}];
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
RCT_REMAP_METHOD(checkNotifications,
|
|
202
|
+
checkNotificationsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
203
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
204
|
+
#if __has_include("DyteRNPermissionHandlerNotifications.h")
|
|
205
|
+
DyteRNPermissionHandlerNotifications *handler = [DyteRNPermissionHandlerNotifications new];
|
|
206
|
+
NSString *lockId = [self lockHandler:(id<DyteRNPermissionHandler>)handler];
|
|
207
|
+
|
|
208
|
+
[handler checkWithResolver:^(RNPermissionStatus status, NSDictionary * _Nonnull settings) {
|
|
209
|
+
resolve(@{ @"status": [self stringForStatus:status], @"settings": settings });
|
|
210
|
+
[self unlockHandler:lockId];
|
|
211
|
+
} rejecter:^(NSError * _Nonnull error) {
|
|
212
|
+
reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
|
|
213
|
+
[self unlockHandler:lockId];
|
|
214
|
+
}];
|
|
215
|
+
#else
|
|
216
|
+
reject(@"notifications_pod_missing", @"Notifications permission pod is missing", nil);
|
|
217
|
+
#endif
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
RCT_REMAP_METHOD(requestNotifications,
|
|
221
|
+
requestNotificationsWithOptions:(NSArray<NSString *> * _Nonnull)options
|
|
222
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
223
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
224
|
+
#if __has_include("DyteRNPermissionHandlerNotifications.h")
|
|
225
|
+
DyteRNPermissionHandlerNotifications *handler = [DyteRNPermissionHandlerNotifications new];
|
|
226
|
+
NSString *lockId = [self lockHandler:(id<DyteRNPermissionHandler>)handler];
|
|
227
|
+
|
|
228
|
+
[handler requestWithResolver:^(RNPermissionStatus status, NSDictionary * _Nonnull settings) {
|
|
229
|
+
resolve(@{ @"status": [self stringForStatus:status], @"settings": settings });
|
|
230
|
+
[self unlockHandler:lockId];
|
|
231
|
+
} rejecter:^(NSError * _Nonnull error) {
|
|
232
|
+
reject([NSString stringWithFormat:@"%ld", (long)error.code], error.localizedDescription, error);
|
|
233
|
+
[self unlockHandler:lockId];
|
|
234
|
+
} options:options];
|
|
235
|
+
#else
|
|
236
|
+
reject(@"notifications_pod_missing", @"Notifications permission pod is missing", nil);
|
|
237
|
+
#endif
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
RCT_REMAP_METHOD(openLimitedPhotoLibraryPicker,
|
|
241
|
+
openLimitedPhotoLibraryPickerWithResolver:(RCTPromiseResolveBlock)resolve
|
|
242
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
243
|
+
|
|
244
|
+
DyteRNPermissionHandlerPhotoLibrary *handler = [DyteRNPermissionHandlerPhotoLibrary new];
|
|
245
|
+
[handler openLimitedPhotoLibraryPickerWithResolver:resolve rejecter:reject];
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
RCT_REMAP_METHOD(checkLocationAccuracy,
|
|
249
|
+
checkLocationAccuracyWithResolver:(RCTPromiseResolveBlock)resolve
|
|
250
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
251
|
+
#if __has_include("RNPermissionHandlerLocationAccuracy.h")
|
|
252
|
+
[self checkUsageDescriptionKeys:[RNPermissionHandlerLocationAccuracy usageDescriptionKeys]];
|
|
253
|
+
|
|
254
|
+
RNPermissionHandlerLocationAccuracy *handler = [RNPermissionHandlerLocationAccuracy new];
|
|
255
|
+
[handler checkWithResolver:resolve rejecter:reject];
|
|
256
|
+
#else
|
|
257
|
+
reject(@"location_accuracy_pod_missing", @"LocationAccuracy permission pod is missing", nil);
|
|
258
|
+
#endif
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
RCT_REMAP_METHOD(requestLocationAccuracy,
|
|
262
|
+
requestLocationAccuracyWithPurposeKey:(NSString * _Nonnull)purposeKey
|
|
263
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
264
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
265
|
+
#if __has_include("RNPermissionHandlerLocationAccuracy.h")
|
|
266
|
+
[self checkUsageDescriptionKeys:[RNPermissionHandlerLocationAccuracy usageDescriptionKeys]];
|
|
267
|
+
|
|
268
|
+
RNPermissionHandlerLocationAccuracy *handler = [RNPermissionHandlerLocationAccuracy new];
|
|
269
|
+
[handler requestWithPurposeKey:purposeKey resolver:resolve rejecter:reject];
|
|
270
|
+
#else
|
|
271
|
+
reject(@"location_accuracy_pod_missing", @"LocationAccuracy permission pod is missing", nil);
|
|
272
|
+
#endif
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
@end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#import "DyteScreensharePickerView.h"
|
|
2
|
+
#import <React/RCTLog.h>
|
|
3
|
+
|
|
4
|
+
@implementation DyteScreensharePickerView
|
|
5
|
+
|
|
6
|
+
RCT_EXPORT_MODULE()
|
|
7
|
+
|
|
8
|
+
RCT_EXPORT_METHOD(showScreenSharePickerView)
|
|
9
|
+
{
|
|
10
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
11
|
+
NSString *screenShareExtensionId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"RTCAppScreenSharingExtension"];
|
|
12
|
+
|
|
13
|
+
RPSystemBroadcastPickerView *view = [[RPSystemBroadcastPickerView alloc] init];
|
|
14
|
+
view.preferredExtension = screenShareExtensionId;
|
|
15
|
+
view.showsMicrophoneButton = NO;
|
|
16
|
+
|
|
17
|
+
SEL selector = NSSelectorFromString(@"buttonPressed:");
|
|
18
|
+
if ([view respondsToSelector:selector]) {
|
|
19
|
+
#pragma clang diagnostic push
|
|
20
|
+
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
|
|
21
|
+
[view performSelector:selector withObject:nil];
|
|
22
|
+
#pragma clang diagnostic pop
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>NSPrivacyTracking</key>
|
|
6
|
+
<false />
|
|
7
|
+
<key>NSPrivacyTrackingDomains</key>
|
|
8
|
+
<array />
|
|
9
|
+
<key>NSPrivacyCollectedDataTypes</key>
|
|
10
|
+
<array>
|
|
11
|
+
<dict>
|
|
12
|
+
<key>NSPrivacyCollectedDataType</key>
|
|
13
|
+
<string>NSPrivacyCollectedDataTypeAudioData</string>
|
|
14
|
+
<key>NSPrivacyCollectedDataTypeLinked</key>
|
|
15
|
+
<false />
|
|
16
|
+
<key>NSPrivacyCollectedDataTypeTracking</key>
|
|
17
|
+
<false />
|
|
18
|
+
<key>NSPrivacyCollectedDataTypePurposes</key>
|
|
19
|
+
<array>
|
|
20
|
+
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
|
|
21
|
+
</array>
|
|
22
|
+
</dict>
|
|
23
|
+
<dict>
|
|
24
|
+
<key>NSPrivacyCollectedDataType</key>
|
|
25
|
+
<string>NSPrivacyCollectedDataTypePhotosorVideos</string>
|
|
26
|
+
<key>NSPrivacyCollectedDataTypeLinked</key>
|
|
27
|
+
<false />
|
|
28
|
+
<key>NSPrivacyCollectedDataTypeTracking</key>
|
|
29
|
+
<false />
|
|
30
|
+
<key>NSPrivacyCollectedDataTypePurposes</key>
|
|
31
|
+
<array>
|
|
32
|
+
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
|
|
33
|
+
</array>
|
|
34
|
+
</dict>
|
|
35
|
+
<dict>
|
|
36
|
+
<key>NSPrivacyCollectedDataType</key>
|
|
37
|
+
<string>NSPrivacyCollectedDataTypeCoarseLocation</string>
|
|
38
|
+
<key>NSPrivacyCollectedDataTypeLinked</key>
|
|
39
|
+
<false />
|
|
40
|
+
<key>NSPrivacyCollectedDataTypeTracking</key>
|
|
41
|
+
<false />
|
|
42
|
+
<key>NSPrivacyCollectedDataTypePurposes</key>
|
|
43
|
+
<array>
|
|
44
|
+
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
|
|
45
|
+
</array>
|
|
46
|
+
</dict>
|
|
47
|
+
</array>
|
|
48
|
+
<key>NSPrivacyAccessedAPITypes</key>
|
|
49
|
+
<array>
|
|
50
|
+
<dict>
|
|
51
|
+
<key>NSPrivacyAccessedAPIType</key>
|
|
52
|
+
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
|
53
|
+
<key>NSPrivacyAccessedAPITypeReasons</key>
|
|
54
|
+
<array>
|
|
55
|
+
<string>C56D.1</string>
|
|
56
|
+
</array>
|
|
57
|
+
</dict>
|
|
58
|
+
</array>
|
|
59
|
+
</dict>
|
|
60
|
+
</plist>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNInCallManager.h
|
|
3
|
+
// RNInCallManager
|
|
4
|
+
//
|
|
5
|
+
// Created by Ian Yu-Hsun Lin (@ianlin) on 05/12/2017.
|
|
6
|
+
// Copyright © 2017 zxcpoiu. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
#import <Foundation/Foundation.h>
|
|
11
|
+
#import <AVFoundation/AVFoundation.h>
|
|
12
|
+
#import <React/RCTEventEmitter.h>
|
|
13
|
+
|
|
14
|
+
@interface RNInCallManager : RCTEventEmitter <RCTBridgeModule, AVAudioPlayerDelegate>
|
|
15
|
+
|
|
16
|
+
@end
|