Issue Description
Cross channel media relay for Player versus Player battle architectures appears to initialize successfully within the application, but no remote users or media streams are received. The relay protocol reports a success code and reaches a connected state, yet audio and video payloads are never delivered to the endpoints.
Platform/SDK
Operating System: Cross Platform Mobile
SDK: Agora RTC SDK for Flutter version 6.x
Error Characterization
No explicit error message is thrown by the SDK. Common observed behaviors during this failure include:
The
startOrUpdateChannelMediaRelaymethod executes and returns a success code of 0.The relay state transitions to
relayStateConnectingand subsequently torelayOk.The
remoteUidsarray remains completely empty.No remote video or audio renders on the local client.
Root Cause
The failure originates from missing backend permissions. The specified App ID does not have the Cross Channel Media Relay feature enabled at the project management level. Consequently, the local SDK relay setup methods execute correctly and return success codes, but the Agora backend routing infrastructure blocks the actual media stream transmission between the channels due to insufficient authorization.
Step-by-Step Solution
-
Verify Project Level Permissions
Recognize that the Cross Channel Media Relay feature requires explicit backend activation. Even with flawless client side implementation, media routing fails if the underlying project permissions are inactive.
-
Request Feature Activation
Contact Agora Support and provide the target App ID. Request the support engineering team to verify and activate the Cross Channel Media Relay functionality for the specific project.
-
Reinitialize the Relay Architecture
Once backend activation is confirmed by the support team, reinitialize the media relay flow. Ensure the following architectural rules are maintained during testing:
Maintain each host in their respective primary live channels.
Initiate the cross channel relay from both endpoints if the project design requires bidirectional media bridging.
Validate all source channel names, destination channel names, user identifiers, and authentication tokens.
-
Validate Media Delivery
Execute the relay commands and monitor the remote stream callbacks. Following backend activation, the relay state transitions successfully and remote media streams populate the target rendering surfaces.
Best Practice
Developers must confirm that all advanced routing features are provisioned for the specific App ID prior to code implementation. If a relay method returns a success code but media fails to transmit, prioritizing an audit of project level permissions accelerates the troubleshooting process. When deploying cross channel architectures, validating both SDK configurations and backend privileges is mandatory.
Corresponding Document/Link
Agora documentation: Cross-channel media relay prerequisites