Skip to content

Commit dd1e628

Browse files
authored
Merge pull request #542 from react-native-webrtc/allow_multiple_handle_types
Add handleType as array in setup method for iOS
2 parents 51f8d9a + ee913c5 commit dd1e628

File tree

2 files changed

+33
-12
lines changed

2 files changed

+33
-12
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@ Alternative on iOS you can perform setup in `AppDelegate.m`. Doing this allows c
113113
If provided, it will be displayed on system UI during the call
114114
- `ringtoneSound`: string (optional)
115115
If provided, it will be played when incoming calls received; the system will use the default ringtone if this is not provided
116+
- `handleType`: string|array (optional)
117+
If provided, it will tell iOS what kind of handle(s) (number) your app can handle.
118+
- `generic`
119+
- `number` (default)
120+
- `email`
116121
- `includesCallsInRecents`: boolean (optional)
117122
If provided, calls will be shown in the recent calls when true and not when false (ios 11 and above) (Default: true)
118123
- `maximumCallGroups`: string (optional)

ios/RNCallKeep/RNCallKeep.m

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -790,19 +790,39 @@ - (BOOL)lessThanIos10_2
790790
}
791791
}
792792

793+
+ (NSSet *) getSupportedHandleTypes:(id) handleType {
794+
if(handleType){
795+
if([handleType isKindOfClass:[NSArray class]]) {
796+
NSSet *types = [NSSet set];
797+
798+
for (NSString* type in handleType) {
799+
types = [types setByAddingObject:[NSNumber numberWithInteger:[RNCallKeep getHandleType:type]]];
800+
}
801+
802+
return types;
803+
} else {
804+
int _handleType = [RNCallKeep getHandleType:handleType];
805+
806+
return [NSSet setWithObjects:[NSNumber numberWithInteger:_handleType], nil];
807+
}
808+
} else {
809+
return [NSSet setWithObjects:[NSNumber numberWithInteger:CXHandleTypePhoneNumber], nil];
810+
}
811+
}
812+
793813
+ (int)getHandleType:(NSString *)handleType
794814
{
795-
int _handleType;
796815
if ([handleType isEqualToString:@"generic"]) {
797-
_handleType = CXHandleTypeGeneric;
816+
return CXHandleTypeGeneric;
798817
} else if ([handleType isEqualToString:@"number"]) {
799-
_handleType = CXHandleTypePhoneNumber;
818+
return CXHandleTypePhoneNumber;
819+
} else if ([handleType isEqualToString:@"phone"]) {
820+
return CXHandleTypePhoneNumber;
800821
} else if ([handleType isEqualToString:@"email"]) {
801-
_handleType = CXHandleTypeEmailAddress;
822+
return CXHandleTypeEmailAddress;
802823
} else {
803-
_handleType = CXHandleTypeGeneric;
824+
return CXHandleTypeGeneric;
804825
}
805-
return _handleType;
806826
}
807827

808828
+ (CXProviderConfiguration *)getProviderConfiguration:(NSDictionary*)settings
@@ -814,12 +834,8 @@ + (CXProviderConfiguration *)getProviderConfiguration:(NSDictionary*)settings
814834
providerConfiguration.supportsVideo = YES;
815835
providerConfiguration.maximumCallGroups = 3;
816836
providerConfiguration.maximumCallsPerCallGroup = 1;
817-
if(settings[@"handleType"]){
818-
int _handleType = [RNCallKeep getHandleType:settings[@"handleType"]];
819-
providerConfiguration.supportedHandleTypes = [NSSet setWithObjects:[NSNumber numberWithInteger:_handleType], nil];
820-
}else{
821-
providerConfiguration.supportedHandleTypes = [NSSet setWithObjects:[NSNumber numberWithInteger:CXHandleTypePhoneNumber], nil];
822-
}
837+
providerConfiguration.supportedHandleTypes = [RNCallKeep getSupportedHandleTypes:settings[@"handleType"]];
838+
823839
if (settings[@"supportsVideo"]) {
824840
providerConfiguration.supportsVideo = [settings[@"supportsVideo"] boolValue];
825841
}

0 commit comments

Comments
 (0)