What triggers the "would like to find and connect to devices on your local network" permission notification on iOS 14? What triggers the "would like to find and connect to devices on your local network" permission notification on iOS 14? ios ios

What triggers the "would like to find and connect to devices on your local network" permission notification on iOS 14?


If you're using react native with a debug configuration, then you are including all the code responsible for communicating with your dev machine so you can probably ignore this message.

However it's best to check you have no other libs that require access too. To do this just build a Release version and see if the message persists.


In a nutshell, Bonjour. Its use is no longer "transparent". See https://developer.apple.com/videos/play/wwdc2020/10110/ for more information:

If your app interacts with devices using Bonjour or other local networking protocols, you must add support for local network privacy permissions in iOS 14.

Even an existing app is subject to this rule; the first attempt to use Bonjour triggers the authorization alert.


One of my apps was triggering this prompt unexpectedly in our internet multiplayer mode. We use RakNet for our networking (which is a C++ lib that uses BSD sockets to send/receive UDP) and I was able to track the problem to the RNS2_Berkley::BindShared function here.

After creating a UDP socket, RakNet tests health/validity of the socket by having it send a little test packet to itself. iOS 14 was flagging this send-to-self behaviour as communication on the local network. I'm not sure if this send-to-self behaviour is a common pattern in socket programming, or a particular quirk of RakNet. Frustratingly, the OS prompt didn't actually appear until later when the socket was used for real which made the issue very hard to track.

I think that this is a false-positive from the OS and raised it with Apple (FB8802121). I won't be holding my breath though so I've just disabled that RakNet behaviour for iOS and am hoping that it wasn't too important.

Edit: To more directly answer the original question: sendto is a method call that can trigger this prompt.