diff --git a/actions.js b/actions.js index 7a1b234..b91aafe 100644 --- a/actions.js +++ b/actions.js @@ -12,6 +12,7 @@ const RNCallKitPerformEndCallAction = 'RNCallKitPerformEndCallAction'; const RNCallKitDidActivateAudioSession = 'RNCallKitDidActivateAudioSession'; const RNCallKitDidDisplayIncomingCall = 'RNCallKitDidDisplayIncomingCall'; const RNCallKitDidPerformSetMutedCallAction = 'RNCallKitDidPerformSetMutedCallAction'; +const RNCallKitPerformPlayDTMFCallAction = 'RNCallKitPerformPlayDTMFCallAction'; didReceiveStartCallAction = handler => { const listener = _RNCallKitEmitter.addListener( @@ -57,10 +58,18 @@ didPerformSetMutedCallAction = handler => ( ) ) +playDTMF = handler => ( + _RNCallKitEmitter.addListener( + RNCallKitPerformPlayDTMFCallAction, + (data) => { handler(data); } + ) +) + export const listeners = { didReceiveStartCallAction, answerCall, endCall, + playDTMF, didActivateAudioSession, didDisplayIncomingCall, didPerformSetMutedCallAction, diff --git a/ios/RNCallKit/RNCallKit.m b/ios/RNCallKit/RNCallKit.m index fc3439f..605adec 100644 --- a/ios/RNCallKit/RNCallKit.m +++ b/ios/RNCallKit/RNCallKit.m @@ -24,6 +24,7 @@ static NSString *const RNCallKitDidActivateAudioSession = @"RNCallKitDidActivateAudioSession"; static NSString *const RNCallKitDidDisplayIncomingCall = @"RNCallKitDidDisplayIncomingCall"; static NSString *const RNCallKitDidPerformSetMutedCallAction = @"RNCallKitDidPerformSetMutedCallAction"; +static NSString *const RNCallKitPerformPlayDTMFCallAction = @"RNCallKitPerformPlayDTMFCallAction"; @implementation RNCallKit { @@ -67,7 +68,8 @@ - (void)dealloc RNCallKitPerformEndCallAction, RNCallKitDidActivateAudioSession, RNCallKitDidDisplayIncomingCall, - RNCallKitDidPerformSetMutedCallAction + RNCallKitDidPerformSetMutedCallAction, + RNCallKitPerformPlayDTMFCallAction ]; } @@ -453,6 +455,15 @@ - (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallA #endif } +- (void)provider:(CXProvider *)provider performPlayDTMFCallAction:(CXPlayDTMFCallAction *)action { +#ifdef DEBUG + NSLog(@"[RNCallKit][CXProviderDelegate][provider:performPlayDTMFCallAction]"); +#endif + NSString *callUUID = [self containsLowerCaseLetter:action.callUUID.UUIDString] ? action.callUUID.UUIDString : [action.callUUID.UUIDString lowercaseString]; + [self sendEventWithName:RNCallKitPerformPlayDTMFCallAction body:@{ @"digits": action.digits, @"callUUID": callUUID }]; + [action fulfill]; +} + - (void)provider:(CXProvider *)provider timedOutPerformingAction:(CXAction *)action { #ifdef DEBUG