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

Cannot signal callkit call rejection when app receives call while in background (IOS)

Open
#162 15 comments 10 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
Dominant language
Java
Stars
1.1k
Forks
511
Avg merge
9h 12m
Merged PRs (30d)
2

Description

I have a voip video calling app.

I am using Callkeep exclusively for IOS, to access IOS callkit.

I have a component that listens to both onRNCallKeepPerformAnswerCallAction and onRNCallKeepPerformEndCallAction. In both cases it will send a message back to the server to update the database about the status of the call - answered or rejected, respectively.

With app in foreground there is no problem, everything works fine.

When the app is in kill state or background, however, and a call comes in, it rings using the callkit ui, as expected.

When I answer, everything works fine.

But when I reject the call the 'onRNCallKeepPerformEndCallAction' listener in react native is not triggered. Instead the app is killed. Therefore, my function signaling to the server that the receiver has rejected the call never goes out.

Only after I manually restart the app, or bring it to the foreground, do I see the api call conveying the message. This is too late. It needs to happen immediately so that the caller knows the call has been rejected.

How can I communicate between callkit UI and react-native for rejected calls when the app is in the background?

Versions

- Callkeep: 3.0.10
- React Native: 0.61.5
- iOS: 12.4.5
- Phone model: IPhone6

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 by tracing the onRNCallKeepPerformAnswerCallAction and onRNCallKeepPerformEndCallAction entry points through the CallKit background rejection path on the listed React Native and iOS versions. Reproduce rejection while the app is backgrounded or killed; done means the end-call listener signals the server immediately instead of waiting for the app to return to the foreground.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, react-native
Domain
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.