iOS 14 上的多播网络授权

Posted

技术标签:

【中文标题】iOS 14 上的多播网络授权【英文标题】:Multicast Networking Entitlement on iOS 14 【发布时间】:2020-12-29 09:53:40 【问题描述】:

我正在开发一个使用 GCDAsyncUdpSocket 实现 SSDP 的应用程序。 在 iOS 14 设备上,该应用无法找到位于同一本地网络上的任何附近设备。

经过研究,我了解到 Apple 为访问本地网络引入了一项新的隐私更改,但我不明白如何在应用中包含所需的权利。

我看到一些论坛帖子,人们建议使用“多播网络授权请求表”向 Apple 请求授权。此表单要求提供 App Store URL,但我的应用尚未上线。我想先在内部测试构建。

我有以下问题:

启用多播权利所需的最少步骤或设置是什么,以便我可以在内部测试我的应用程序?

我将不胜感激有关此主题的任何建议和想法。谢谢。

【问题讨论】:

如果您是开发者计划中的付费会员,您可以解释为什么您的应用需要多播并且通常会被授予。 App Store URL 是次要信息,除非 Apple 告诉它获取它的唯一方法。 【参考方案1】:

我于 21 年 1 月 2 日申请了多播网络授权 here,他们于 21 年 1 月 5 日回复了我。我的应用程序适用于同一网络上的设备。事实证明,您只需要 *arbitrary*wildcard services 的权利。以下是 convo 的简短 sn-p 以及他们对通配符的最后回应:

初次申请

解释为什么您的应用需要发送多播或广播流量,或浏览所有 Bonjour 服务类型

: 如果我的应用有 2 个或更多 iPhone(userA 和 userB)使用 Bonour、NWConnection、NWListener 和 NWBrowser 连接,如果我是 userA,请按 mapButton 进行搜索,我希望 userB 会立即出现...

回复表格代表

感谢您对多播网络的关注。听起来您可以使用 Bonjour / Multicast DNS,它不需要任何权利,但只需要更改您的 Info.plist。如果您对如何使用 API 有任何疑问,请关注开发者论坛。

我主要关心的是向 App Store 提交我的应用程序以支持没有多播权利的 ios 14,它会因为没有它而被拒绝。我对 iOS 14、多播权利、通过 NWConnection 的 Bonjour(这是我在更新我的应用程序以支持本地网络时打算使用的内容)以及应用程序审查团队有点迷茫。根据这个doc和这个doc-

"您的应用必须具有此权利才能在 iOS 上发送或接收 IP 多播或广播。它还允许您的应用浏览和宣传任意 Bonjour 服务类型。此权利需要获得 Apple 的许可才能在您的应用。您可以在没有有效授权的情况下使用 iOS 和 iPadOS 模拟器测试您的应用,但在物理硬件上使用多播和广播网络需要授权。"

为什么你说我需要的只是将更改添加到我所做的 info.plist 中:

-PrivacyPrivacy - 本地网络使用说明:我的应用需要您的许可才能使用本地网络与您周围的用户联系。

-Bonjour 服务:_myApp._tcp

代表的回应

只有在能够浏览和宣传任意或通配符服务时才需要该权利。如果您已将您使用的一种类型添加到您的 Info.plist,正如您详细说明的那样,您不需要该权利。如果您的应用程序按原样运行良好,您无需再做任何事情! 最好的, 苹果网络

【讨论】:

【参考方案2】:

对于内部测试,最好使用 NWConnection 创建虚拟连接,这将触发系统对话以询问权限(如果之前未显示系统对话)并检查是否允许本地网络访问,如 https://developer.apple.com/forums/thread/663769 中所述,这在 iOS 14.2 中可用。

一旦允许本地网络访问,SSDP请求将全部生效。

最好查看https://developer.apple.com/forums/thread/663875 以获取有关需要哪些操作以及当前例外情况的更多详细信息。除了当前的例外情况,我认为您可以按照上述方式进行内部测试,而无需申请授权。

【讨论】:

以上是关于iOS 14 上的多播网络授权的主要内容,如果未能解决你的问题,请参考以下文章

网络硬件7.IP多播的概念

网络硬件7.IP多播的概念

计算机网络学习笔记6-多播

MCS多播交换光开关实现网络灵活配置

第7章 网络层协议_IGMP协议

Spring Boot 中的多播 Websocket