Multicast Networking Entitlement on iOS 14

Viewed 2732

I am working on an application that implements SSDP using GCDAsyncUdpSocket. On iOS 14 devices, the application is not able to find any nearby devices present on the same local network.

After research, I understood that Apple has introduced a new privacy change for accessing the local network but I am not able to understand how to include the required entitlement in the app.

I see a few forum posts where people suggest to request the entitlement from Apple using "Multicast Networking Entitlement Request Form". This form is asking for App Store URL and my app is not live yet. I want to test the build internally first.

I have the following question:

What are the minimum steps or settings required to enable the multicast entitlement so that I can test my app internally?

I would appreciate any suggestions and thoughts on this topic. Thank you.

2 Answers

I applied for the multicast network entitlement here on 1/2/21 and they got back to me on 1/5/21. My application was for devices on the same network. It turns out that you only need the entitlement for *arbitrary* or wildcard services. Here is a brief snippet of the convo with their response about wildcards at the end:

Initial application

Explain why your app needs to send multicast or broadcast traffic, or browse for all Bonjour service types

Me: If my app has 2 or more iPhones (userA and userB) connected using Bonour, NWConnection, NWListener, and NWBrowser, if I'm userA, press the mapButton for a search I would expect userB to immediately appear ...

Response form rep:

Thanks for your interest in multicast networking. It sounds like you’re able to use Bonjour / Multicast DNS, which doesn’t require any entitlement, but only requires a change to your Info.plist. If you have further questions about how to use the APIs, please follow up on the developer forums.

Me

My main concern is submitting my app to the App Store to support iOS 14 without the multicast entitlement and it gets rejected for not having it. I'm a little lost about iOS 14, the multicast entitlement, Bonjour via NWConnection which is what I intend to use when I update my app to support local networking, and the App Review Team. According to this doc and this doc-

"Your app must have this entitlement to send or receive IP multicast or broadcast on iOS. It also allows your app to browse and advertise arbitrary Bonjour service types. This entitlement requires permission from Apple before you can use it in your app. You can test your app using the iOS and iPadOS simulators without an active entitlement, but using multicast and broadcast networking on physical hardware requires the entitlement."

Why do you say that all I need is to add the change to my info.plist which I did:

-PrivacyPrivacy - Local Network Usage Description: My app needs your permission to use the local network to connect with users around you.

-Bonjour services: _myApp._tcp

Response from rep:

The entitlement is needed only to be able to browse and advertise arbitrary or wildcard services. If you’ve added the one type you use to your Info.plist, as you detail, you do not need the entitlement. If your app is working fine as-is, you don’t need to do anything more! Best, Apple Networking

For testing internally, better to create dummy connection using NWConnection, this will trigger system dialogue for asking permission (if system dialogue is not shown anytime before) and check the local network access is allowed or not as mentioned in https://developer.apple.com/forums/thread/663769 , this is available from iOS 14.2.

Once the local network access is allowed, the SSDP request will all work.

Also better to check https://developer.apple.com/forums/thread/663875 for more details for what operations the entitlement is required and current exceptions. With the current exception I think you can do as mentioned above for internal testing without having to request for entitlement.

Related