react-native-webrtc / react-native-webrtc/react-native-callkeep
sendDTMF from in-app does not play DTMF sound on iOS
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.1k
- Forks
- 511
- Avg merge
- 9h 12m
- Merged PRs (30d)
- 2
Description
Hi everyone, after hours of trying to solve this, I ask for advice here, out of options. Thanks in advance for your help !
Bug report
-
I've checked the example to reproduce the issue. : NO (example not working (pods issues))
-
Reproduced on:
-
Android
-
iOS
Description
- DTMF tone not played when calling
sendDTMFfrom JS in-app - However, mute tone IS played when calling
setMutedCallfrom JS in-app - However, DTMF tone is played when digit tapped from the CallKitUI
I though at first maybe audio session was involved as CallKit was in background, but I can hear the sound of the mute action. It is strange that I can't hear the sound of the DTMF action.
Then I though the current call audio was messing with the DTMF sound, I tried to start a blank call (only RNCallKeep.startCall), I can hear the sound of mute button but still no sound of DTMF tone.
Steps to Reproduce
- Start a call with uuid
- Trigger
RNCallKeep.sendDTMF(uuid, "1")in-app
Versions
- Callkeep: 4.3.8
- React Native: 0.69.1
- iOS: 16.5.1
- Android: N/A
- Phone model: iPhone X
Logs
(I cleaned the irrelevant stuff)
2023-06-30 11:58:35.429199+0200 TypescriptReactNativeStarter[856:142290] [native] Running application TypescriptReactNativeStarter ({
initialProps = {
};
rootTag = 1;
})
2023-06-30 11:58:35.476420+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][init]
2023-06-30 11:58:35.476520+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][getProviderConfiguration]
2023-06-30 12:00:34.646072+0200 TypescriptReactNativeStarter[856:143030] [RNCallKeep][setup] options = {
appName = "Blabla Light";
}
2023-06-30 12:00:34.646851+0200 TypescriptReactNativeStarter[856:143030] [RNCallKeep][setSettings] options = {
appName = "Blabla Light";
}
2023-06-30 12:00:34.650842+0200 TypescriptReactNativeStarter[856:142705] [RNCallKeep][startObserving]
2023-06-30 12:00:43.711272+0200 TypescriptReactNativeStarter[856:143237] [RNCallKeep][startCall] uuidString = 8e852339-e3df-4b54-966b-20bb52e093d0
2023-06-30 12:00:43.712940+0200 TypescriptReactNativeStarter[856:143237] [RNCallKeep][requestTransaction] transaction = <CXTransaction 0x282483480 UUID=EFEB4EE5-AFF3-4838-8A25-15B7127DF4E5 isComplete=0 actions=(
"<CXStartCallAction 0x2811c7ba0 UUID=AF8F213A-29C2-4E91-AF77-C4C2328B6FB1 state=0 commitDate=(null) callUUID=8E852339-E3DF-4B54-966B-20BB52E093D0 handle=<CXHandle 0x282483fe0 type=PhoneNumber value=0769071469 siriDisplayName=(null)> contactIdentifier=0769071469 video=0 relay=0 upgrade=0 retry=0 emergency=0 isVoicemail=0 ttyType=0 localLandscapeAspectRatio={0, 0} localPortraitAspectRatio={0, 0} dateStarted=(null) localSenderIdentityUUID=(null) shouldSuppressInCallUI=0>"
)>
2023-06-30 12:00:43.729610+0200 TypescriptReactNativeStarter[856:143237] [RNCallKeep][requestTransaction] Requested transaction successfully
2023-06-30 12:00:43.739650+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:performStartCallAction]
2023-06-30 12:00:43.739742+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][configureAudioSession] Activating audio session
2023-06-30 12:00:43.774980+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidReceiveStartCallAction, hasListeners : YES
2023-06-30 12:00:44.000167+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:didActivateAudioSession]
2023-06-30 12:00:44.000227+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][configureAudioSession] Activating audio session
2023-06-30 12:00:44.033080+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidActivateAudioSession, hasListeners : YES
2023-06-30 12:00:44.141412+0200 TypescriptReactNativeStarter[856:143237] [RNCallKeep][updateDisplay] uuidString = 8e852339-e3df-4b54-966b-20bb52e093d0 displayName = uri =
2023-06-30 12:00:44.220188+0200 TypescriptReactNativeStarter[856:142718] [javascript] #######didActivateAudioSession
2023-06-30 12:00:44.224571+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 addTrack +110ms
2023-06-30 12:00:44.229855+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 createOffer +5ms
2023-06-30 12:00:44.235124+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 createOffer OK +6ms
2023-06-30 12:00:44.235602+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 setLocalDescription +0ms
2023-06-30 12:00:44.240827+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 setLocalDescription OK +5ms
2023-06-30 12:00:44.370648+0200 TypescriptReactNativeStarter[856:143264] [RNCallKeep][updateDisplay] uuidString = 8e852339-e3df-4b54-966b-20bb52e093d0 displayName = uri =
2023-06-30 12:00:46.169998+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 setRemoteDescription +2s
2023-06-30 12:00:47.840791+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 ontrack +2s
2023-06-30 12:00:47.843824+0200 TypescriptReactNativeStarter[856:142718] [javascript] rn-webrtc:pc:DEBUG 0 setRemoteDescription OK +3ms
2023-06-30 12:01:07.176725+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][setMutedCall] muted = 1
2023-06-30 12:01:07.177071+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][requestTransaction] transaction = <CXTransaction 0x2824b8d80 UUID=961F8C2B-16E1-4DDD-83A3-10F4E8A067E7 isComplete=0 actions=(
"<CXSetMutedCallAction 0x2800eff70 UUID=670EC616-11E9-4683-A4AD-FDD27D6A9F4B state=0 commitDate=(null) callUUID=8E852339-E3DF-4B54-966B-20BB52E093D0 muted=1>"
)>
2023-06-30 12:01:07.177989+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][requestTransaction] Requested transaction successfully
2023-06-30 12:01:07.179058+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:performSetMutedCallAction]
2023-06-30 12:01:07.179100+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidPerformSetMutedCallAction, hasListeners : YES
2023-06-30 12:01:08.393442+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][setMutedCall] muted = 0
2023-06-30 12:01:08.393861+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][requestTransaction] transaction = <CXTransaction 0x2823f4860 UUID=6E9936C5-7821-4840-9B0B-BD3E4CDF44A1 isComplete=0 actions=(
"<CXSetMutedCallAction 0x2800f3520 UUID=713A6151-1E8B-4B08-AD24-263A8AC15A47 state=0 commitDate=(null) callUUID=8E852339-E3DF-4B54-966B-20BB52E093D0 muted=0>"
)>
2023-06-30 12:01:08.395110+0200 TypescriptReactNativeStarter[856:143272] [RNCallKeep][requestTransaction] Requested transaction successfully
2023-06-30 12:01:08.396059+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:performSetMutedCallAction]
2023-06-30 12:01:08.396122+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidPerformSetMutedCallAction, hasListeners : YES
2023-06-30 12:01:10.034825+0200 TypescriptReactNativeStarter[856:143264] [RNCallKeep][sendDTMF] key = 1
2023-06-30 12:01:10.035092+0200 TypescriptReactNativeStarter[856:143264] [RNCallKeep][requestTransaction] transaction = <CXTransaction 0x2824e3e20 UUID=8307E2B5-F16C-42A0-A75E-2FEF35D76508 isComplete=0 actions=(
"<CXPlayDTMFCallAction 0x2800b1ea0 UUID=0E33B322-5A77-4299-A9F0-CFD2B5BAB3FC state=0 commitDate=(null) callUUID=8E852339-E3DF-4B54-966B-20BB52E093D0 digits=1 type=3>"
)>
2023-06-30 12:01:10.035648+0200 TypescriptReactNativeStarter[856:143264] [RNCallKeep][requestTransaction] Requested transaction successfully
2023-06-30 12:01:10.036085+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:performPlayDTMFCallAction]
2023-06-30 12:01:10.036114+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidPerformDTMFAction, hasListeners : YES
2023-06-30 12:01:11.770273+0200 TypescriptReactNativeStarter[856:142718] [javascript] 'RNCallKeep | sendDTMF | key, ', '2'
2023-06-30 12:01:11.772071+0200 TypescriptReactNativeStarter[856:143272] [RNCallKeep][sendDTMF] key = 2
2023-06-30 12:01:11.772780+0200 TypescriptReactNativeStarter[856:143272] [RNCallKeep][requestTransaction] transaction = <CXTransaction 0x2823e34e0 UUID=1617E0E5-2DA6-4B63-8CAB-A1E47D3CA67A isComplete=0 actions=(
"<CXPlayDTMFCallAction 0x2800f9450 UUID=93182EE1-4EAB-4698-A5D2-A58DDA1C4212 state=0 commitDate=(null) callUUID=8E852339-E3DF-4B54-966B-20BB52E093D0 digits=2 type=3>"
)>
2023-06-30 12:01:11.774843+0200 TypescriptReactNativeStarter[856:142705] [RNCallKeep][requestTransaction] Requested transaction successfully
2023-06-30 12:01:11.776973+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:performPlayDTMFCallAction]
2023-06-30 12:01:11.777115+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidPerformDTMFAction, hasListeners : YES
2023-06-30 12:01:39.964034+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:performEndCallAction]
2023-06-30 12:01:39.964193+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepPerformEndCallAction, hasListeners : YES
2023-06-30 12:01:40.081757+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][updateDisplay] uuidString = 8e852339-e3df-4b54-966b-20bb52e093d0 displayName = uri =
2023-06-30 12:01:40.138246+0200 TypescriptReactNativeStarter[856:143265] [RNCallKeep][reportEndCallWithUUID] uuidString = 8e852339-e3df-4b54-966b-20bb52e093d0 reason = 2
2023-06-30 12:01:40.796797+0200 TypescriptReactNativeStarter[856:142290] [RNCallKeep][CXProviderDelegate][provider:didDeactivateAudioSession]
2023-06-30 12:01:40.796857+0200 TypescriptReactNativeStarter[856:142290] [[RNCallKeep]] sendEventWithNameWrapper: RNCallKeepDidDeactivateAudioSession, hasListeners : YES
2023-06-30 12:01:40.816142+0200 TypescriptReactNativeStarter[856:142718] [javascript] #######didDeactivateAudioSession
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the RNCallKeep.sendDTMF(uuid, key) entry point and reproduce the reported iOS behavior using the stated call sequence. Compare it with the working setMutedCall path and CallKit UI DTMF action; done means an in-app sendDTMF call produces the expected audible tone on iOS.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, javascript, react-native
- Domain
- audio-video-rtc, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100