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 上的多播网络授权的主要内容,如果未能解决你的问题,请参考以下文章