Overview

This guide explains how to add ringing functionality to your Flutter app, enabling an end-to-end call flow experience.

For a hands-on approach, check out our step-by-step tutorial on building an app with full ringing functionality here. You can also explore our sample ringing application, which showcases the final result of the tutorial, here.

Incoming Calls

Stream Video makes it easy to build apps that support ringing calls. When a user initiates a ringing call, the recipient receives an incoming call notification.

For detailed instructions on implementing ringing functionality, visit this page.

Ringing Options

The way an incoming call is presented depends on your app’s configuration and its current state (foreground, background, or terminated).

In-app Incoming Calls

When the app is in the foreground, you can display a custom in-app incoming call screen. This screen is typically triggered by a ringing WebSocket event sent to your app. You have full control over the design and behavior of this screen. For more information on customizing the in-app call screen, check out this section.

This method does not display an incoming call screen if the app is in the background or terminated. To handle such scenarios, proper VoIP push handling is required. Additionally if VoIP push/CallKit is configured, the system displays a ringing notification alongside the in-app incoming screen when the app is in the foreground.

CallKit Integration (iOS)

For iOS apps running in the background or terminated, Apple’s CallKit framework can be integrated. CallKit enables the app to handle system-level incoming call screens by sending a VoIP push notification from the server, which wakes up the app. While CallKit provides limited UI customization, it ensures consistent behavior across iOS devices. Learn more about integrating Stream Video with CallKit in this guide.

Firebase Integration (Android)

For Android apps running in the background or terminated, Firebase push notifications can be used to handle ringing. These notifications let users join or decline the call and can also launch the app if needed. For step-by-step integration instructions, refer to this guide.

Push Notifications

You can also use standard push notifications for ringing. While these notifications are less interactive and do not allow users to directly accept or reject a call, they can trigger actions such as deeplinking into your app. For more details, visit the push notifications guide.

© Getstream.io, Inc. All Rights Reserved.