Skip to content

Missed call notification not received when call times out unanswered #1096

@mabayon

Description

@mabayon

What did you do?

When a call is not answered by the user on the mobile side, I let the call reach its ringing timeout naturally (without explicitly rejecting it). I expected to receive a missed call push notification after the timeout expired.

What did you expect to happen?

A call.missed event should be fired and a missed call push notification should be delivered to the callee's device when the call times out unanswered — consistent with the behavior described in the GetStream documentation.

What happened instead?

No missed call notification is received when the call times out on the mobile side.

However, if the caller (web agent) hangs up before the timeout, the missed call notification is received correctly.

After investigating, the root cause appears to be that the Swift SDK is automatically sending a decline reason when the call times out unanswered. According to the GetStream documentation, the call.missed event is only triggered when the rejection reason is timeout or busy — not decline. This prevents the call.missed event from firing.

curl 'https://video.stream-io-api.com/video/call/default/*/reject?api_key=&connection_id=' \
-X POST \
-H 'Host: video.stream-io-api.com' \
-H 'Accept: */*' \
-H 'Authorization:' \
-H 'X-Stream-Client: stream-video-swift-v1.44.0|app=|app_version=|os=iOS -|device_model=iPhone13,2' \
-H 'stream-auth-type: jwt' \
-H 'Accept-Language: fr-FR,fr;q=0.9' \
-H 'User-Agent: /7 CFNetwork/3860.500.111 Darwin/25.4.0' \
-H 'Connection: keep-alive' \
-H 'x-client-request-id:' \
-H 'Content-Type: application/json' \
--data-raw '{"reason":"decline"}' \

The reason should be timeout in this scenario, not decline.

GetStream Environment

GetStream Video version: 1.44.0
GetStream Video frameworks: StreamVideo
iOS version: iOS 26
Swift version: Swift 6
Xcode version: Xcode 26
Device: iPhone 12

Additional context

  • The missed call notification works correctly when the web agent ends the call before the timeout, confirming the server-side call.missed logic is functioning correctly.
  • The issue is isolated to the reason code sent by the Swift SDK on the callee side when a call times out unanswered.
  • Expected fix: the SDK should send reason: "timeout" instead of reason: "decline" when auto-rejecting a timed-out call.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions