Skip to content

FCE-3440: React context for VoIP + useVoIP hook + working example on IOS#557

Open
Magmusacy wants to merge 19 commits into
feature/voip-callsfrom
braaa
Open

FCE-3440: React context for VoIP + useVoIP hook + working example on IOS#557
Magmusacy wants to merge 19 commits into
feature/voip-callsfrom
braaa

Conversation

@Magmusacy

@Magmusacy Magmusacy commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Description

Adds a complete iOS VoIP calling example (examples/mobile-client/voip-call/) showing how to wire native PushKit VoIP pushes and CallKit into a Fishjam call, end to end:

  • Example app (Expo / React Native):
    • VoipProvider + useVoip context that owns the call lifecycle (available → incoming/connecting → active), driving the Fishjam connection (join on answer/start, leave on end) and the CallKit session. Media (mic/camera) is acquired before joining so tracks publish reliably.
    • Screens matching the fishjam-chat look & feel: Login, Directory, Outgoing call, and an In-call screen with an audio layout and a FaceTime-style video layout (remote full-screen + local PiP).
    • Reusable UI (Avatar, InCallButton, VideoCallView), a shared theme, and login persistence via AsyncStorage with logout.
    • A minimal Deno signaling backend (server/) using certificate-based APNs auth to send VoIP pushes, with setup docs.
  • SDK: exports useVoIPEvents (and VoIPEventHandlers / VoipIncomingPayload types) from @fishjam-cloud/mobile-client, so apps can subscribe to PushKit/CallKit events (token registered, incoming, answered, ended) from JS.
  • Submodule bump: packages/react-native-webrtc is moved forward to pick up the native PushKit registration + CallKit incoming-call reporting that the example relies on.

Motivation and Context

The mobile SDK already had CallKit primitives, but there was no end-to-end reference for the full native VoIP flow - receiving a PushKit push while backgrounded, presenting the system incoming-call UI via CallKit, and connecting that to a Fishjam room. This PR provides that reference implementation plus the useVoIPEvents bridge and a sample backend, so developers can see and reproduce the whole path.

Documentation impact

  • Documentation update required
  • Documentation updated in another PR
  • No documentation update required

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to
    not work as expected)

@Magmusacy Magmusacy changed the title Braaa FCE-3440: React context for VoIP + useVoIP hook + working example on IOS Jun 29, 2026
@linear

linear Bot commented Jun 29, 2026

Copy link
Copy Markdown

FCE-3440

@Magmusacy Magmusacy marked this pull request as ready for review June 29, 2026 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant