Title: iOS Local Network Discovery (UDP Multicast / SSDP) Not Working – Works on Android
Hi everyone,
I’m facing an issue with local network device discovery on iOS. The same implementation works perfectly on Android, but fails (or behaves inconsistently) on iOS.
What I’m trying to do
I am building a React Native app that discovers Wi-Fi audio devices (Arylic / Linkplay-based speakers) on the same local network.
The discovery flow:
Send SSDP (UDP multicast) M-SEARCH request to 239.255.255.250:1900
Listen for device responses
Fetch device description via HTTP (LOCATION header)
Parse and store discovered devices
What works
✅ Android: Device discovery works reliably (multiple devices detected)
❌ iOS: No devices are discovered (or discovery is very inconsistent)
iOS Configuration
I have already added the required permissions in Info.plist:
NSLocalNetworkUsageDescription
NSBonjourServices (including _http._tcp, _airplay._tcp, _spotify-connect._tcp, etc.)
NSAppTransportSecurity with local network exceptions
The app correctly prompts for Local Network permission, and permission is granted.
Implementation Details
Using UDP sockets (react-native-udp)
Joining multicast group:
239.255.255.250
Sending SSDP M-SEARCH requests every few seconds
Listening for responses via socket on('message')
Observed Behavior on iOS
UDP socket initializes successfully
No errors thrown
No SSDP responses received
devices array remains empty
HTTP-based direct calls to known device IPs work fine
Additional Notes
The same network, same devices, same code works on Android
iOS device is on the same Wi-Fi network
Tried both real device and simulator (expected simulator limitations)
Questions
Is UDP multicast (SSDP) restricted or unreliable on iOS for third-party apps?
Are there additional entitlements required to receive multicast responses?
Is there any official Apple-recommended approach for discovering LAN devices (other than Bonjour)?
Is this a known limitation of iOS networking stack?
As a fallback, I’m considering scanning the local subnet via HTTP requests, but that’s less efficient compared to SSDP.
Any guidance or clarification from Apple engineers or others who have faced similar issues would be greatly appreciated.
Thanks in advance.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
0
0
17