Open
Conversation
…lkit-telecom-integration # Conflicts: # sample-apps/react-native/dogfood/ios/Podfile.lock # yarn.lock
…/GetStream/stream-video-js into feat/callkit-telecom-integration
…' into feat/callkit-telecom-integration
### 💡 Overview Add proper reasoning for callingx endCall methods This is important for callkit especially.. paraphrasing callkit doc ``` [Respond to Call Hang Ups and Failures](https://developer.apple.com/documentation/pushkit/responding-to-voip-notifications-from-pushkit#Respond-to-Call-Hang-Ups-and-Failures) Many things can go wrong when connecting a VoIP call, and CallKit makes it easy to handle problems when they occur. If the person who initiated the call hangs up, use the network connection between your app and server to notify the app. In your app, call the [reportCall(with:endedAt:reason:)](https://developer.apple.com/documentation/CallKit/CXProvider/reportCall(with:endedAt:reason:)) method of its [CXProvider](https://developer.apple.com/documentation/CallKit/CXProvider) object, specifying [CXCallEndedReason.remoteEnded](https://developer.apple.com/documentation/CallKit/CXCallEndedReason/remoteEnded) as the reason for the end of the call. If the incoming call interface is onscreen, CallKit updates the interface to reflect the end of the call, and dismisses the interface. If the recipient of a call answers before the app establishes a connection to your server, don’t fulfill the [CXAnswerCallAction](https://developer.apple.com/documentation/CallKit/CXAnswerCallAction) object sent to the [provider(_:perform:)](https://developer.apple.com/documentation/CallKit/CXProviderDelegate/provider(_:perform:)-h4in) method of your delegate immediately. Instead, wait until you establish a connection and then fulfill the object. While it waits for your app to fulfill the request, the incoming call interface lets the user know that the call is connecting, but not yet ready. If your app fails to establish a connection to your server, call the [reportCall(with:endedAt:reason:)](https://developer.apple.com/documentation/CallKit/CXProvider/reportCall(with:endedAt:reason:)) method with the [CXCallEndedReason.failed](https://developer.apple.com/documentation/CallKit/CXCallEndedReason/failed) option. If the incoming call interface is currently onscreen, the system updates it to indicate a failed call. After sending the initial push notification, don’t send additional push notifications to cancel the call or communicate new details to your app. Instead, communicate with the app directly over the network connection you established between it and your server. Using an existing network connection is generally faster than sending a push notification, and if network conditions are poor, APNs may be unable to deliver push notifications to the device anyway. ``` ### 📝 Implementation notes 🎫 Ticket: https://linear.app/stream/issue/XYZ-123 📑 Docs: https://github.com/GetStream/docs-content/pull/<id>
…' into feat/callkit-telecom-integration
3 tasks
### 💡 Overview When CallKit deactivates the audio session after a call ends, it fires didDeactivateAudioSession. Currently that callback only tells RTCAudioSession the session is deactivated — but the ADM is not touched. After telling WebRTC the session is deactivated, we will reset the ADM so it's in a clean state, with no stale references from the previous call. --------- Co-authored-by: Santhosh Vaiyapuri <santhoshvai@gmail.com>
…all (#2122) ### 💡 Overview displayIncomingCall resolved its JS promise immediately before the call was actually registered ### 📝 Implementation notes Make the promise resolve only after native registration confirms success/failure 🎫 Ticket: https://linear.app/stream/issue/XYZ-123 📑 Docs: https://github.com/GetStream/docs-content/pull/<id> --------- Co-authored-by: Artem Grintsevich <greenfrvr@gmail.com>
### 💡 Overview * isCallRegistered mixed two concepts: app-level “we started tracking this call” vs Telecom/CallKit registration completion. This change makes intent explicit (isCallTracked) and ensures Android behavior matches iOS by returning true immediately when tracking starts. * removed pushTappedIncomingCallCId$, it was unnecessary anymore * ignore duplicate invocations on ios --------- Co-authored-by: Artem Grintsevich <greenfrvr@gmail.com>
Co-authored-by: Artem Grintsevich <greenfrvr@gmail.com>
### 💡 Overview Added legacy arch support for callingx package.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…integration # Conflicts: # packages/client/src/Call.ts # sample-apps/react-native/dogfood/ios/Podfile.lock # yarn.lock
### 💡 Overview Sending proper reasons to callkit/telecom would show the appropriate states in the native view For example, in callkit.. "call failed" - "call ended" - "call missed" are appropirately shown based on what we pass
# Conflicts: # packages/client/src/types.ts # sample-apps/react-native/dogfood/ios/Podfile.lock # sample-apps/react-native/dogfood/package.json # yarn.lock
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Adds a new calling experience package with native iOS CallKit and Android call UI, incoming/outgoing call handling, notifications, ringtones, background/headless tasks, and a keep-alive foreground service. * Exposes a debug audio-state log for troubleshooting. * **Documentation** * Ship comprehensive README and usage docs for the new calling package. * **Chores** * Add build/release scripts and workspace packaging; update dependencies and sample apps to opt into the new calling package. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
### 💡 Overview This PR solves an issue with quickly answered CallKit call. The problem was that CXProvider delegate was not set by the moment CallKit answer event was omitted and was not added to delayed events store. Current implementation ensures that delegate will be set up before we report the call, so that all consequent events will be handled.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
💡 Overview
Current pull request provides implementation of CallKit/Android Telecom functionality which includes the following:
notifeeimplementationAs part of the PR following dependencies became redundant:
react-native-voip-push-notificationreact-native-callkeepNow neither ringing flow nor call alive functionality don't depend on
@notifee/react-nativewhich will allow to get rid of that dependency in near future.📝 Implementation notes
🎫 Ticket: https://linear.app/stream/issue/RN-17/android-support-for-telecom-manager
📑 Docs: https://github.com/GetStream/docs-content/pull/881
Summary by CodeRabbit
New Features
Improvements
Chores