Apple has added additional privacy protection around the local network access in its iOS 14 updates. Among them, it is the multicast networking entitlement. Starting from iOS 14, the multicast networking entitlement is required in order for an iOS app to send UDP multicast broadcast message on its local network. This requirement has been further enforced in iOS 14.5 and higher
This requirement and the enforcement in iOS 14.5 and higher have impacts on the apps that use the Network Discovery API in the Link-OS SDK for iOS. Because the Network Discovery API needs to send multicast UDP message on its local network in order to discover Zebra printers, the app that uses this API needs to have the Multicast Network Entitlement granted by Apple.
The ZSDKDeveloperDemos that comes with the Link-OS SDK for iOS is impacted as well, as the Network Discovery Demo won’t work anymore with iOS 14.5 and higher.
In order to use the Network Discovery API in your iOS app, you need to do the following:
- Add NSLocalNetworkUsageDescription to the info.plist with a short description to tell the user why your app needs to access the local network.
- Request the permission for the app to send and receive the multicast UDP message on the local network. That is to file the Multicast Network Entitlement request. If you are a member of your company’s Apple Developer Program account, you will have to ask the account holder to file the request. A sample request form is shown in the diagram below.
- Once the Multicast Network Entitlement is granted, you need to enable the com.apple.developer.networking.multicast.
https://developer.apple.com/forums/thread/662082 (Original discussion thread)
https://developer.apple.com/forums/thread/663271 (How to enable the entitlement)