react-native-webrtc / react-native-webrtc/react-native-callkeep

sendDTMF from in-app does not play DTMF sound on iOS

Open
#706 1 comment 0 reactions 0 assignees View on GitHub

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 sendDTMF from JS in-app
  • However, mute tone IS played when calling setMutedCall from 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.